我有这个服务器:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.json.Json;
import javax.json.stream.JsonParser;
public class TestServer
{
static ServerSocket serverSocket = null;
static boolean done = false;
public static void main(String[] args)
{
try
{
serverSocket = new ServerSocket(9995);
// windows cmd: netstat -a -b -n | findstr 9995
}
catch (Exception e)
{
e.printStackTrace();
}
while (!done)
{
System.out.println("accepting connections on port " + serverSocket.getLocalPort());
try
{
Socket clientSocket = serverSocket.accept();
System.out.println("connection accepted");
Thread temp = new Thread(new ClientHandler(clientSocket));
temp.run();
}
catch (IOException e)
{
if (!done)
{
e.printStackTrace();
}
}
}
}// end main
}
class ClientHandler implements Runnable
{
Socket connection;
JsonParser parser;
ClientHandler(Socket connection)
{
this.connection = connection;
}
public void run()
{
System.out.println("someone connected from " + connection.getLocalAddress());
// http://docs.oracle.com/javaee/7/tutorial/doc/jsonp004.htm
try
{
parser = Json.createParser(connection.getInputStream());
while (connection.isConnected())
{
while (parser.hasNext())
{
JsonParser.Event event = parser.next();
switch (event)
{
case START_ARRAY:
case END_ARRAY:
case START_OBJECT:
case END_OBJECT:
case VALUE_FALSE:
case VALUE_NULL:
case VALUE_TRUE:
System.out.println(event.toString());
break;
case KEY_NAME:
System.out.print(event.toString() + " "
+ parser.getString() + " - ");
break;
case VALUE_STRING:
case VALUE_NUMBER:
System.out.println(event.toString() + " "
+ parser.getString());
break;
}
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}// end ClientHandler
和此客户端:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.json.*;
import javax.json.JsonWriter;
public class TestClient
{
static Socket s;
static OutputStream output;
static InputStream input;
public static void main(String[] args)
{
try
{
s = new Socket("localhost", 9995);
output = s.getOutputStream();
input = s.getInputStream();
JsonWriter jsonWriter = Json.createWriter(output);
JsonObject hello = Json.createObjectBuilder()
.add("firstName", "Duke")
.add("lastName", "Java")
.add("age", 18)
.add("streetAddress", "100 Internet Dr")
.add("city", "JavaTown")
.add("state", "JA")
.add("postalCode", "12345")
.add("phoneNumbers", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("type", "mobile")
.add("number", "111-111-1111"))
.add(Json.createObjectBuilder()
.add("type", "home")
.add("number", "222-222-2222")))
.build();
jsonWriter.writeObject(hello);
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当我运行这两个(首先运行服务器)时,我得到的结果是:
线程“main”javax.json.JSONException中的异常:自动检测流的编码时出现I/O错误
在哪里可以设置流的编码类型?我应该把它设置成什么?我需要为客户端和服务器都这样做吗?
谢谢,
还有..它只是少了一行代码:
jsonWriter.close();
在JsonWriter.WriteObject之后
不确定如何具体地回答注释,但我希望保持连接打开,以便能够发送更多的消息,而不必每次都重新建立它(但没有进入代码,因为我希望看到一个消息首先工作!)
问题内容: 我目前在我的项目中使用类型,并且遇到问题。 上面的代码中的可以是或。这是类型的原因。 我知道不是。 我需要知道的是如何使它工作。 问题答案: 可编码需要知道要转换的类型。 首先,我将尝试解决不知道类型的问题,看看是否可以解决它并使它更简单。 否则,我目前认为解决您的问题的唯一方法就是使用如下所示的泛型。
问题内容: 我正在使用poi 3.6 我能够正确创建Excel。但是,当我尝试将单元格类型设置为number时,它总是为我提供常规的单元格类型。 即在新创建的excel中,当我右键单击并设置单元格格式->我总是发现数字是General。 我的代码是这样的 您能建议一下这里缺少什么吗? 问题答案: 您也可以尝试这种方法: 当然,请查看有关数据格式的文档和示例。
控制台输出中的西里尔符号显示不正确。Jenkins正在Windows 7上运行Tomcat/8.5.11 Jenkins属性显示: file.encoding cp1251 sun.jnu.encoding cp1251 sun.stderr.encoding cp866 sun.stdout.encoding cp866 解决了:我在bin文件夹中创建了文件setenv.bat并设置java_o
我使用的是poi 3.6 我能够正确地创建excel。但当我试图将单元格类型设置为数字时,它总是将单元格类型设置为常规。 i、 e.在新创建的excel中,当我右键单击并转到“格式化单元格”时- 我的代码是这样的 你能告诉我这里缺少什么吗?
我试图重置文本框值。试图设置类型字符串|数字的变量,但我得到一个错误。那么如何在打字稿中将两种类型设置为单个变量。请帮助找到解决方案。 错误: 元素[i]. value=值[i]; 类型“string | number”不可分配给类型“string”。类型“number”不可分配给类型“string” 演示:https://stackblitz.com/edit/angular-dzxsg4?fi
问题内容: 在我的Web应用程序中,我使用jQuery的方法提交了一些表单字段。我在编码方面遇到了一些问题。我的应用程序的字符集是,但我认为这些字段是通过提交的。 如何设置通话中使用的编码? 问题答案: 我认为,如果您想更改编码,则可能必须使用,请参见下面的参数(and 回调假定您具有和html中的内容): 我实际上只需要一个小时左右就可以完成,真是巧合!