关于socket连接的问题 (在线等)

hjd1399 2009-04-22 02:17:26
背景是:
CLASS A 用ServerSocket创建Socket服务
程序流程:
ServerSocket ss = new ServerSocket(6666);
while (true) {
Socket socket = s.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(
ss.getInputStream()));
String str = in.readLine();
System.out.println("msg="+ str);
}

CLASS B 有3个函数
函数: connectS Socket连接
sendMsg 发送信息
closeS 关闭Socket


程序流程:

connectS ;
for(int i=0;i<10;i++){
sendMsg;
}
closeS ;

具体实现:
connectS 函数
socket = new Socket(InetAddress.getLocalHost(),6666);


sendMsg函数:
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.write(args);
out.flush();

但是测试结果是服务器端只接受了一次,
好像是连接一次(connectS),发送一次(sendMsg)才行。
怎么才能实现只连接一次,无限次的发送信息?


在线等。
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangpeixv 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ty_tarena_pger 的回复:]
先把最简单的做了,再慢慢改
[/Quote]
同意
LZ不要心急啊
ty_tarena_pger 2009-04-23
  • 打赏
  • 举报
回复
先把最简单的做了,再慢慢改
hjd1399 2009-04-23
  • 打赏
  • 举报
回复
[最好线程那块用个池 ]

怎么用池
hjd1399 2009-04-23
  • 打赏
  • 举报
回复
简单的早做了,怎么做池呢。
zhangpeixv 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ty_tarena_pger 的回复:]
Java code
public class BroadcastServer implements Runnable {

public static final int LOCAL_PORT = 6999;// 本地打开的端口,用于接收数据

private Socket receSock;

public BroadcastServer(Socket socket) {
try {
receSock = socket;

} catch (Exception ee) {
ee.printStackTrace();
}
}

public static void main(String[] a…
[/Quote]
up
这是最简单的
最好线程那块用个池

处理线程并发可没那么容易啊
ty_tarena_pger 2009-04-22
  • 打赏
  • 举报
回复

public class BroadcastServer implements Runnable {

public static final int LOCAL_PORT = 6999;// 本地打开的端口,用于接收数据

private Socket receSock;

public BroadcastServer(Socket socket) {
try {
receSock = socket;

} catch (Exception ee) {
ee.printStackTrace();
}
}

public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(LOCAL_PORT);
while (true) {
Socket connectSocket = serverSocket.accept();
BroadcastServer server = new BroadcastServer(connectSocket);
Thread thread = new Thread(server);
thread.start();

}
}

public void run() {

try {
DataInputStream dis = new DataInputStream(receSock.getInputStream());
DataOutputStream dos = new DataOutputStream(receSock.getOutputStream());

while (true) {
String strReceive = dis.readUTF();
System.out.println(strReceive);
/*
* 自己写代码
*
*/

}

} catch (IOException ee) {
ee.printStackTrace();
}

}

}
yaohg312 2009-04-22
  • 打赏
  • 举报
回复
String str = in.readLine();
System.out.println("msg="+ str);


问题在这里,这里要用循环。
你的代码是不管client输入多少行,你只读一行


msgsnd 2009-04-22
  • 打赏
  • 举报
回复
Socket socket = s.accept();
放到while前面
hjd1399 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luffyke 的回复:]
建议楼主利用线程控制!
[/Quote]

怎么作
luffyke 2009-04-22
  • 打赏
  • 举报
回复
建议楼主利用线程控制!
捏造的信仰 2009-04-22
  • 打赏
  • 举报
回复
楼主我教你怎么贴代码:
1、将代码进行良好的格式化,以方便阅读。
2、在发帖文本框的上方单击“#”按钮,选择 Java
3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:

public class Hello {

// 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}

62,614

社区成员

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

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