作者vity (逍遥盃-佛得)
看板java
标题[问题] Server端ServerSocket 的accept()
时间Fri Sep 30 12:22:31 2011
大家好
我想让server端能回应client端
但是server端ServerSocket的accept方法会当掉
不知道该怎麽解决...
我用本机开启server与client时
client程式不会当掉,
换另一台电脑去呼叫server时,
server和client都会当掉
检查过port, 也试过关防毒软体
client程式码如下(我写在actionPerformed里)
byte buff[]=new byte[1024];
try
{
txa.append("Connect to Server");
Socket s=new Socket("140.113.59.165",11000);
txa.append("Connection construced");
InputStream in=s.getInputStream();
int n=in.read(buff);
txa.append("received from server");
txa.append(new String(buff,0,n));
in.close();
s.close();
}
catch(Exception ex)
{
txa.append(e+"happen");
}
server程式码如下(同样写在actionPerformed)
try
{
ServerSocket svs=new ServerSocket(11000);
txa.append("wait for client's request");
Socket s=svs.accept(); //这行出现开始会当掉
txa.append("Connecting");
txa.append("Sending");
OutputStream out=s.getOutputStream();
String str="GOGOGO";
out.write(str.getBytes());
out.close();
s.close();
txa.append("Completed");
}
catch(Exception ex)
{
txa.append(e+"happen");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.59.165
1F:推 LaPass:有印出什麽东西吗? 09/30 12:49
又要谢谢你~client是直接连不上, server会印出第一行 wait for client's request
然後就当掉
※ 编辑: vity 来自: 140.113.59.165 (09/30 13:12)
※ 编辑: vity 来自: 140.113.59.165 (09/30 13:12)
2F:推 LaPass:可能没当掉,只是一直卡在accept那边等连线进来而已... = = 09/30 13:39
但是连不进去...冏
3F:→ laiis:改用 nio 来写就不会 block 了... 09/30 13:56
※ 编辑: vity 来自: 140.113.59.165 (09/30 14:15)
4F:推 PsMonkey:你先确定一下实体网路的设定问题,说不定 IP 根本就..... 09/30 14:47
5F:推 LaPass:嗯.... 换区网的IP试试看..... 09/30 14:55
6F:推 LaPass:换127.0.0.1试试看也可以 09/30 16:36
本机也不行...真的不知道为什麽
※ 编辑: vity 来自: 140.113.59.165 (09/30 19:54)
我用netstat -nao去检查
发现我开的port 是出现在
协定 本机位址 外部位址 状态 PID_#
TCP [ : : ]: 11000 [ : : ]:0 Listening (是我javaw的process没错)
为何是开在这? 是这个的问题吗?
开在140.113.59.165 或是127.0.0.1
例如[140.113.59.165:11000] 感觉比较对?...要怎麽改呢
※ 编辑: vity 来自: 140.113.59.165 (09/30 20:27)
7F:→ LaPass:没遇过.... 我区网/本机/网际网路/android模拟器通通连很顺 09/30 21:07
8F:推 jackzzkao:有可能是 blocking 10/01 03:48
问题解决了, 回来说明一下解决过程
原本是用awt写的, 改成用console後发现一切正常, 可传资料
於是用console的server对awt的client =>不行
用console的client对 awt的server =>可以
推论:awt的client有问题
果然在将frame弄成物件时叫成别的class的
经修正可连线, 谢谢大家的帮忙,
最大的问题不是电脑 不是网路 是我啊@@
※ 编辑: vity 来自: 140.113.59.165 (10/01 16:23)
9F:推 LaPass:没过用awt.... 这还真是神奇的状况..... 10/01 17:02
10F:→ sbrhsieh:楼上会错意了,这跟 AWT 无关。 10/01 20:29
11F:→ PsMonkey:弄个 thread 就可以了吧? 10/01 21:37