Socket通讯问题

kingsuperman 2011-04-27 04:42:40
各位大侠,初次接触Socket,写了一个简单的服务端接收客户端发送的字符串程序。
下面是我服务端的代码,客户端我是写的一个循环,连续3次向服务端发字符串,但是服务端只接收了第一次发的,后面2次发的都没接收到,大侠们帮瞅下,谢谢各位!



服务端代码:


public void init() throws Exception {

ServerSocket ss = new ServerSocket(8090);
Socket socket = null;
BufferedReader in;
PrintStream output;
while (true) {
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line = in.readLine();
String transno = line.substring(0, 3);
if (transno.equals("007")) {
//***此处省略具体做的事情
OutputStream outputStream = socket.getOutputStream();
output = new PrintStream(outputStream);
output.println("222");
output.flush();
if (output != null)
output.close();
if (in != null)
in.close();
socket.close();
}
}

}





...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿杰心路历程 2011-04-27
  • 打赏
  • 举报
回复


class xxx {
public void init() throws Exception {

ServerSocket ss = new ServerSocket(8090);
Socket socket = null;
BufferedReader in;
PrintStream output;
while (true) {
socket = ss.accept();
MyThread thread = new MyThread(socket);
thread.start();
}

}

}

class MyTHread extends Thread{
private Socket socket;
BufferedReader in;
PrintStream output;

public MyThread(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = in.readLine();
String transno = line.substring(0, 3);
if (transno.equals("007")) {
//***此处省略具体做的事情
OutputStream outputStream = socket.getOutputStream();
output = new PrintStream(outputStream);
output.println("222");
output.flush();
if (output != null)
output.close();
if (in != null)
in.close();
socket.close();
}

}
}
}


kingsuperman 2011-04-27
  • 打赏
  • 举报
回复
楼上的大大,



socket = ss.accept();
MyThread thread = new MyThread(socket);
thread.start();
这3句我还是得写在while循环里面吧
也就是

while(true){

socket = ss.accept();
MyThread thread = new MyThread(socket);
thread.start();



}
是这样的吗 ?


阿杰心路历程 2011-04-27
  • 打赏
  • 举报
回复
只接受到第一的吧?
在接受到客服端连接上来后,要重启开启一个线程专门接受该客服端发送的信息的
要不然一直 socket = ss.accept(); 堵塞在那里呢


socket = ss.accept();
MyThread thread = new MyThread(socket);
thread.start();

--------------------------------------------------
class MyTHread extends Thread{
private Socket socket;
BufferedReader in;
PrintStream output;

public MyThread(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = in.readLine();

}
}
}

代码手写 可能有问题 大概意思就是这样的

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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