【发布时间】:2013-08-27 13:14:39
【问题描述】:
我正在使用 Java Socket 开发客户端-服务器应用程序。我的应用程序有服务器,它将监听端口
- 客户端将连接到该端口
- 从客户端接收数据
- 向客户端发送数据
我的代码的一部分
public void run() {
System.out.println("Got a client !");
try {
// Get Data From Client
int red = -1;
byte[] buffer = new byte[5 * 1024]; // a read buffer of 5KiB
byte[] redData;
StringBuilder clientData = new StringBuilder();
String redDataText;
while ((red = clientSocket.getInputStream().read(buffer)) > -1) {
/* Get Data From Client Here Code Hidden */
System.out.println("Data From Client :"
+ clientData.toString());
OutputStream out = clientSocket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
String sDataToClient = "TEST DATA TO SEND IN BYTE ARRAY";
byte[] b = sDataToClient.getBytes("UTF-8");
byte[] bClientSend = new byte[b.length + 2];
bClientSend[0] = (byte) 1;
bClientSend[1] = (byte) 79;
System.arraycopy(b, 0, bClientSend, 2, b.length);
dos.write(bClientSend);
System.out.println(Arrays.toString(bClientSend));
}
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
在以下行将数据发送到客户端后,我得到java.net.SocketException: Connection reset
while ((red = clientSocket.getInputStream().read(buffer)) > -1) {
我可以看到System.out.println(Arrays.toString(bClientSend));的数组内容然后出现错误
【问题讨论】:
-
你关闭服务器端的连接了吗?查看异常的可能原因:stackoverflow.com/questions/62929/…
-
之前访问过的链接...是因为在向客户端发送数据后我的客户端关闭了与服务器的连接,因此我在
while循环中出现错误? -
我的服务器没有关闭与客户端的连接
-
尝试使用 BufferedInputStream 实例并在循环条件中使用它。
-
只是为了确定一个更基本的套接字程序是否适合您?我的意思是这是你的第一个套接字程序吗?