java - 打开套接字时,我的程序似乎什么都不做
问题描述
public static void main(String args[]) {
boolean isServer=true;
int port=4000;
try{
if(isServer==true){
new Server(port);
//starta server
}
if(isServer==false){
new Client(port);
}}
catch(IOException e){
System.out.println("could not start chat");
}
}
}
class Server{
ServerSocket server;
Socket socket;
Server(int port) throws IOException{
server = new ServerSocket(port);
socket = server.accept();
System.out.println("got here");
new ChatParticipant(socket);
server.close();
}}
所以我有这个程序,它应该开始两个人之间的聊天,但是当我第一次尝试启动服务器时,我似乎没有得到我的第一个打印语句,而且我似乎也从来没有开始我的 chatparticipant 类。问题似乎与 socket=Server.accepts() 的初始化有关,就好像我在它打印出来之前放置了我的打印语句。我该如何解决?
解决方案
该函数server.accept()
会阻止您的代码,直到客户端连接到您的服务器。我敢打赌这不会发生在您的实际测试设置中。
https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#accept()
推荐阅读
- android - Android 导航组件 - 向上导航打开相同的片段
- android - 如何正确应用谷歌服务插件?
- r - R - ggplot2 - 尽管数据单调,但取决于多个变量的绘图和 aes 创建锯齿形
- java - 如何从父项目覆盖 Spring Data Mongo 版本?
- node.js - nodejs使用套接字接收数据。但它被分割了
- oracle - 如何将 SELECT 到模式中的任何表授予角色 (Oracle)
- android - 如何在 Android 8/9 上为 OkHttp 3.12.x 启用 TLSv1.3?
- web - 如何改进浏览器缓存
- powershell - 停止远程使用文件的进程
- c# - 如何在从网络摄像头获取的 c# Emgu cv 帧中创建服务器 RTSP?