JAVA的Socket为什么会自动关闭。跪了,求解

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

当的用户账号密码正确时,客户端会向服务器提出连接请求,也就是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。

​。 拜托了,帮帮我吧。
展开
 我来答
蚂蚁的天线
2019-06-16 · TA获得超过643个赞
知道小有建树答主
回答量:742
采纳率:54%
帮助的人:101万
展开全部
对的呀,异常处理了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式