Java socket如何实现多次通讯,满分求高手解答一下!

谁用了我的宇宙大魔王 2015-10-25 10:20:24
我现在的代码只能实现一次通讯,如何在一次socket连接过程中实现多次通讯。具体的说就是我现在每次连接socket之后只能实现给服务器发送一个值,然后接收返回值,而且发送的值定义在方法内部。现在我需要多次发送不同的数据并接收。我该用什么方式把参数传递进去可以实现多次传递并在我需要的时候关闭socket连接。请问怎么实现,是用线程还是什么,还请知道的人不吝指教,给个思路,谢谢。
public class Control2 {
public String up() {
try {
Socket socket = new Socket("192.168.19.167", 4001);// 向本机的4700端口发出客户请求("192.168.19.167",4001)
OutputStream socketWriter = socket.getOutputStream();//定义输出流
InputStream socketReader = socket.getInputStream();//定义输入流
byte[] b = new byte[1024];
b[0]=(byte) 0x81;
b[1]=(byte) 0x01;
b[2]=(byte) 0x06;
b[3]=(byte) 0x01;
b[4]=(byte) 0x05;
b[5]=(byte) 0x05;
b[6]=(byte) 0x03;
b[7]=(byte) 0x01;
b[8]=(byte) 0xFF;
socketWriter.write(b);
socketWriter.flush();
System.out.println("我是服务器,客户端说:" + b);// 在系统标准输出上打印读入的字符串
int count = 0;//存放输入流中字节长度
while (count == 0) {//设置等待,长度为0表示未读取到,继续循环读取
count = socketReader.available();//把输入流中字节长度赋值给count
System.out.println("222");
System.out.println("333");
}
byte[] c = new byte[count];
socketReader.read(c);//把输入流的中的字节数组放入c
System.out.println(c);
String str = new String(c);
System.out.println(str);
socketWriter.close();//关闭Socket输出流
socketReader.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
return null;
} catch (Exception e) {
System.out.println("Error" + e);
return null;
}
}
}
...全文
557 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感谢回答,结贴了
qingyuan18 2015-10-26
  • 打赏
  • 举报
回复
用JAVA新的NIO,用selector异步连socket server
寄莫相伴 2015-10-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/u012963788/article/details/49275627 看我这个,里面有代码下载

67,550

社区成员

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

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