java socket突然断开_JAVA的Socket为什么会自动关闭。跪了,求解

问题描述:这里有一个服务器和一个带图形界面客户端。当的用户账号密码正确时,客户端会向服务器提出连接请求,也就是newSicket(...,...);可是为什么客户端这个Socket会在成功连接7秒...

问题描述: 这里有一个服务器和一个带图形界面客户端。

当的用户账号密码正确时,客户端会向服务器提出连接请求,也就是new Sicket(..., ...);

可是为什么客户端这个Socket会在成功连接7秒左右自动关闭。我判断客户端的Socket已经关闭的原因有两个。

.客户端的socket不停调用s.sendUrgentData方法,但在运行7秒左右时会抛出异常。

2 服务器一直在等待客户端的消息,但是在运行7秒左右服务器却抛出connection reset异常,在抛异常之前客户端可以正常发送数据,异常之后不能再发送了,在百度上知道这是因为发送方(也就是客户端)的socket已经关闭,而接收方还在等待接受而抛出的异常。

相关代码: // 客户端代码public class LoginFrame extends JFrame { private Socket s ;

if (log()) { // log是连接数据库的函数,会返回boolean表示用户名密码对不对

s = Client.requst(nameTF.getText()); // 为s赋值,将返回的Socket保存在s中, 类的静态方法requst }

else { System.out.println("登陆失败"); }}

// 主函数public static void main(String[] args) throws InterruptedException {

LoginFrame f = new LoginFrame();

Thread.sleep(2000);// 为了给输入用户名和密码时间

while (true) {

try {

f.s.sendUrgentData(0xFF);

System.out.println("发送成功");

} catch (IOException e) {

System.out.println("因发送心跳包出现异常" + e.getMessage()); break

}

}}

// 客户端的连接请求代码public class Client {public static Socket requst(String name) {

Socket s = null; try { // 发出连接请求 s = new Socket("127.0.0.1", 8888);

PrintWriter writer = new PrintWriter(s.getOutputStream()); // 告诉服务器是谁刚刚连接

writer.write(name + "\n");

writer.flush(); } catch (UnknownHostException e) { System.out.println(e.getMessage());

} catch (IOException e) {

System.out.println(e.getMessage());

}

return s;}

相关截图客户端异常图片说明服务器异常(提问时,异常变成这个,但之前都是Connection reset)图片说明请各位朋友帮忙了。

这次是JAVA课程设计,但老师并没有讲Socket,Socket的一些细节我也不清楚。所以拜托了帮我找找Bug。

​。 拜托了,帮帮我吧。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值