java - Java - 拒绝连接的套接字 - 使用 IDE Netbeans
问题描述
已解决= 我的服务器代码需要放置在正确的位置。外部 EventQueue.Invokeletter{});
当我运行客户端并单击按钮登录时,客户端无法连接到服务器。
我第一次使用它时,它可以工作,但是我的客户端无缘无故无法连接到服务器。
我应该怎么做才能使它正确?
服务器代码
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new mainmenu().setVisible(true);
ServerSocket ss=new ServerSocket(1234);
Socket socket1=ss.accept();
} catch (IOException ex) {
Logger.getLogger(mainmenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
客户代码
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
try {
Socket cs = new Socket("localhost", 1234);
} catch (IOException ex) {
Logger.getLogger(mainclient.class.getName()).log(Level.SEVERE, null, ex);
}
}
解决方案
这里:
ServerSocket ss=new ServerSocket(1234);
Socket socket1=ss.accept();
等待一个客户端连接。然后你的run()
方法处理那个客户......然后结束!
如果您希望您的代码再次等待,您需要在代码的那部分周围放置一个循环。
换句话说:您编写的代码将打开一个服务器套接字,等待传入的连接,处理它,然后......消失。如果您想随着时间的推移为多个客户端提供服务,那么只要“服务器”程序启动并运行,就需要用一个持续等待新客户端的循环替换“消失”部分。
推荐阅读
- pandas - TypeError: ufunc 循环不支持十进制类型的参数 0。十进制没有可调用的 arccos 方法
- azure - 配置 Azure CDN 缓存
- java - 算法字符比较逻辑失败
- node.js - 有没有一个东西可以包装一个轮询 api 并暴露 websockets?
- docker - 通过 Dockerfile 和 ODT 在 Window Container 中安装 office365
- parsing - 如何实现 parsec 的 try 方法?
- azure - 无法使用人脸 api 快照
- algorithm - 如何解决“Levenberg-Marquardt 算法不处理边界约束”错误
- java - 与 Apache Spark 预期相反的 PCA
- reactjs - 无法读取 react/redux 中未定义的属性“映射”