socket编程的问题 大家多帮忙

zhangliang1982 2007-06-21 01:13:52

o关闭以后,server也关闭了,这是怎么回事情,我不希望server也关闭
public class TestSocket {

public static void main(String[] args) {
try {
Socket server = new Socket("127.0.0.1", 60001);
OutputStream o = server.getOutputStream();
byte[] byteBuffer = new byte[1024];
o.write(byteBuffer);
o.close();
TestLogger.log("server is closed " + server.isClosed());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangliang1982 2007-06-21
  • 打赏
  • 举报
回复
Socket server = new Socket("127.0.0.1", 60001);
OutputStream o = server.getOutputStream();
这是和服务器段建立套接字 然后马上就望服务器端写数据,然后服务器处理并返回数据,所以我的socket还得留着
zqrqq 2007-06-21
  • 打赏
  • 举报
回复
那就用短连接,每次通讯完毕后关掉socket,下次通讯的时候再建立新的socket,如何?
gloomyfish 2007-06-21
  • 打赏
  • 举报
回复
终于看到有人提什么短连接长连接的啊
嘿嘿!我当时第一次听到差点被忽悠住
zqrqq 2007-06-21
  • 打赏
  • 举报
回复
那就用短连接,每次通讯完毕后关掉socket,如何?
zhangliang1982 2007-06-21
  • 打赏
  • 举报
回复
我的服务器端是这么写的,如果我不关闭客户端的输出流的话,下面客户端的while就永远得不到-1,程序就跳不出循环
Socket client = server.accept();
String filedir = "temp//unzipdir//datapackage.zip";
RandomAccessFile inFile = new RandomAccessFile(filedir, "rw");
int amount;
InputStream inSocket = client.getInputStream();
byte byteBuffer[] = new byte[1024];
while ((amount = inSocket.read(byteBuffer)) != -1) {
inFile.write(byteBuffer, 0, amount);
}
zqrqq 2007-06-21
  • 打赏
  • 举报
回复
实际上,你不应该close这里的OutputStream!
只需要o.flush();就可以了
chenwei1215 2007-06-21
  • 打赏
  • 举报
回复
把错误贴出来吧。帅哥,怎么没有分呀?

62,623

社区成员

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

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