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。
。 拜托了,帮帮我吧。 展开
当的用户账号密码正确时,客户端会向服务器提出连接请求,也就是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。
。 拜托了,帮帮我吧。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询