请教SOCKET编程里面,怎么保证所选端口没被其他程序占用

请教SOCKET编程里面,怎么保证所选端口没被其他程序占用,第1张

关于如何查看端口是否被占用,可以根据以下步骤来 *** 作:
1、开始---->运行---->cmd,或者是window+R组合键,调出命令窗口;
2、输入命令:netstat -ano,列出所有端口的情况。在列表中观察被占用的端口,比如是49157,首先找到它。
3、查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是2720。
4、继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口,结果是:svchostexe

如果是一对一的话,不要用到线程,相当于一个1对1的聊天。主要是这,你看下

try{tsetText("服务端开启,等待客户端连接");
ss=new ServerSocket(50000);
}catch(IOException e){
Systemerrprintln("无法在50000端口建立监听服务");
Systemexit(1);
}
try{ s=ssaccept();
fstart=true;
tappend("\n和来自"+sgetInetAddress()+"客户端连接成功!\n");
tappend("\n你现在可以通信了");
dis=new DataInputStream(sgetInputStream());
kehu[1]=disreadUTF();
}catch(IOException e){
Systemerrprintln("和客户端建立服务失败");
Systemexit(1);
}
try{

while(true){
dis=new DataInputStream(sgetInputStream());
dos=new DataOutputStream(sgetOutputStream());
tappend("\n客户端1:"+disreadUTF());

}
}catch(IOException e){

}
}

微信小程序weappsocketio不稳定,断开不触发断开事件,可以在监听心跳事件设置回调处理,默认ping是自动发送,服务器会会pong,监听是否有接收到pong,一定时间没接收到且未触发socket断开事件,可以判定socket已断开连接,此时执行重连

getInputStreampublic InputStream getInputStream() throws IOException 返回此套接字的输入流。 如果此套接字具有关联的通道,则所得的输入流会将其所有 *** 作委托给通道。如果通道为非阻塞模式,则输入流的 read *** 作将抛出 IllegalBlockingModeException。 在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP 连接情况下的连接重置)。当网络软件检测到中断的连接时,将对返回的输入流应用以下 *** 作: 网络软件可能丢弃经过套接字缓冲的字节。网络软件没有丢弃的字节可以使用 read 读取。 如果没有任何字节在套接字上缓冲,或者 read 已经消耗了所有缓冲的字节,则对 read 的所有后续调用都将抛出 IOException。 如果没有任何字节在套接字上缓冲,并且没有使用 close 关闭套接字,则 available 将返回 0。 关闭返回的 InputStream 将关闭关联套接字。 返回: 从此套接字读取字节的输入流。 抛出: IOException - 如果在创建输入流时发生 I/O 错误、没有关闭套接字、没有连接套接字或者使用 shutdownInput() 关闭了套接字输入</dd> 楼主好好看API!!!!!!!!!!!!!!!!

应用程序连接池会在没有数据处理的时候,自动回收。所以在IIS上开一个常开SOKET是不靠谱的做法。如果必须要,应该包含重启动机制,最好是页面触发。不然是没有再触发的可能的,除非包含定时重启功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13345554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-18
下一篇 2023-07-18

发表评论

登录后才能评论

评论列表(0条)

保存