很简单的socket 问题; 希望有人帮忙回答下;

u010509143 2013-08-14 05:12:49
写socket 的时候遇见个问题
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at com.bjkingtech.server.thread.ServerThread.run(ServerThread.java:18)
at java.lang.Thread.run(Thread.java:619)

服务器------------
public class Server {
static ServerSocket server=null;
public static void main(String[] args) throws InterruptedException, IOException {
try {
int i = 0;
server = new ServerSocket(8000);
System.out.println("服务器启动......");
Socket socket = null;
while (true) {
socket = server.accept();
System.out.println("接受" + i);
Thread.sleep(1000);
ServerThread run = new ServerThread(socket);
Thread t = new Thread(run);
t.start();
i++;
}
} catch (IOException e) {
e.printStackTrace();
}finally{
server.close();

}
}
package com.bjkingtech.client;
// 客户端;-------
public class Client {

public static void main(String[] args) {
Client c = new Client();
try {
Socket socket = new Socket("192.168.1.155", 8000);
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())).write("here we go");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}
//-------服务线程-----------
package com.bjkingtech.server.thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class ServerThread implements Runnable {
Socket socket = null;
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
System.out.println("启动线程========");
String msg = null;
try {
msg = new BufferedReader(new InputStreamReader(
socket.getInputStream())).readLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}
}

多谢
...全文
219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010509143 2013-09-11
  • 打赏
  • 举报
回复
谢谢各位, 问题找到了,没有关闭流导致的报错, 谢谢大家
keepdaydayup 2013-08-14
  • 打赏
  • 举报
回复
报java.net.SocketException: Connection reset这个错,如果你只运行Client.java的话 你在建立Socket之前没建服务 即 Socket socket = new Socket("192.168.1.155", 8000); 之前没先建服务,你的Server
猫大叔 2013-08-14
  • 打赏
  • 举报
回复
一般是IP、端口不对。或者网络防火墙
白开水MD5 2013-08-14
  • 打赏
  • 举报
回复
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())).write("here we go"); 改成: PrintWriter writer = new PrintWriter(s.getOutputStream()); writer.println("here we go"); writer.flush(); 这样试下
VICTOR_Hcz 2013-08-14
  • 打赏
  • 举报
回复
这个不是问题,你如果不知道异常的英语单词,建议你可以查一下有道词典。 java.net.SocketException: Connection reset 是说你的客户端与服务器断开了连接。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧