我作了个TCP通信,服务端接收信息后不能返回给客户端信息

jade0428 2007-04-20 09:12:20
如题目,帮忙检查一下程序问题出在哪?谢谢了~~~
server端:
public class server {
public server() {
try {
ServerSocket socket = new ServerSocket(8877, 20);
System.out.println("服务端已经启动");
while(true)
{
BufferedInputStream br = new BufferedInputStream(socket.accept().getInputStream());
byte[] bytes = new byte[1024];
int notelen = br.read(bytes);
String noteinfo = new String(bytes, 0, notelen); //接收发送过来的信息
System.out.println(noteinfo);

PrintWriter pw = new PrintWriter(socket.accept().getOutputStream());
pw.println("server");
pw.flush();
}
}
catch (IOException ex) {
}
}
public static void main(String[] args) {
server server1 = new server();
}

}

client端:
public class client {
public client() {
InetSocketAddress it = new InetSocketAddress("192.168.0.32", 8877);
Socket socket=new Socket();
try {
socket.connect(it, 1000);
PrintWriter pw=new PrintWriter(socket.getOutputStream());
pw.println("client");
pw.flush();

DataInputStream isr = new DataInputStream(socket.getInputStream());
String result = isr.readLine();
System.out.println(result);
isr.close();
}
catch (IOException ex) {
System.out.println(ex);
}
finally{
try {
socket.close();
}
catch (IOException ex1) {
}
}

}
public static void main(String[] args) {
client client1 = new client();
}

}
...全文
347 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkdlut 2007-04-20
  • 打赏
  • 举报
回复
PrintWriter pw = new PrintWriter(socket.accept().getOutputStream());
这条语句的socket.accept().getOutputStream()错了。
改一下
while(true)
{ Socket s=socket.accept();
BufferedInputStream br = new BufferedInputStream(s.getInputStream());
byte[] bytes = new byte[1024];
int notelen = br.read(bytes);
String noteinfo = new String(bytes, 0, notelen); //接收发送过来的信息
System.out.println(noteinfo);

PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("server");
pw.flush();
}
jade0428 2007-04-20
  • 打赏
  • 举报
回复
谢谢你的回复,看来我是连接的原理没弄明白,界贴了
baobao28 2007-04-20
  • 打赏
  • 举报
回复 1
问题出在你的服务端
PrintWriter pw = new PrintWriter(socket.accept().getOutputStream());
pw.println("server");
pw.flush();
这段代码根本没有执行,因为你在socket.accept()的时候等于又新建立了一次连接,这样就找不到原来的连接了,所以连接失败
修改:
在接收信息前用
Socket so=new Socket();
替换你的socket.accept()
接收信息改成
PrintWriter pw = new PrintWriter(so.getInputStream());
发送信息改成
PrintWriter pw = new PrintWriter(so.getOutputStream());

62,615

社区成员

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

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