OpenHarmony开发者论坛

标题: TCP连接自动销毁异常 [打印本页]

作者: MAK丶E    时间: 前天 18:05
标题: TCP连接自动销毁异常
[md]### hap创建TCP服务,端口不能正常复用

1. 应用里使用**socket.constructTCPSocketServerInstance()**创建**TCPServer**实例,使用**listen**监听指定IP的对应端口,我这里监听的**192.168.2.251:8222**。使用conect触发连接回调

   ```
   // tcp连接测试
     tcpConnect(){
       let tcp:socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
       let listenAddress: socket.NetAddress = {
         port: 8222,
         address: "192.168.2.251"
       }
       // 开启监听服务
       tcp.listen(listenAddress, (err:BusinessError)=>{
         if(err){
           console.log("[console] tcp listen fail");
           return;
         }
         console.log("[console] tcp listen success");
         tcp.on("error",(err:BusinessError)=>{
           console.log("[console] tcp listen error:",err.message);
         })
         tcp.on("connect",(client:socket.TCPSocketConnection)=>{
           console.log("[console] tcp connect ->",client.clientId);
           client.on("message",(data)=>{
             console.log("[console] tcp client message:",data.message)
           })
           client.on("close",()=>{
             console.log("[console] tcp client close");
           })
         })
       })
     }
   ```
2. 运行调用这个方法设备会创建8222端口监听实例,并且这时是没有连接实例创建的,可通过netstat命令获取到:

   ![image.png](https://forums-obs.openharmony.c ... aevu838t8e0tutt.png "image.png")
3. 如果这个时候使用任意TCP工具连接该鸿蒙设备的8222端口可以发现设备会创建连接实例:
   ![image.png](https://forums-obs.openharmony.c ... n0sojujhehu05r8.png "image.png")
4. 但如果这时强行关闭hap应用会发现虽然8222的监听不见了,但连接实例会处于TIME_WAIT状态:
   ![image.png](https://forums-obs.openharmony.c ... 2wzkwy6c3xwii3e.png "image.png")
5. 这个TIME_WAIT会存在大概1分钟的时间才会被自动回收,但如果在这个回收之前再次打开这个hap应用,会发现应用不会再创建8222端口的监听服务会自动随机监听一个端口,不会复用8222,只有在之前的连接实例被回收后才能创建8222端口监听服务,不知道怎么解决😕
   ![image.png](https://forums-obs.openharmony.c ... 8vec88cyv1jcjjj.png "image.png")

### 【运行环境】

硬件:飞腾派E2000 内装OpenHarmony4.0.10.23
ROM版本:
DevEvoStudio版本:4.0.0.600
SDK版本:10
[/md]
作者: MAK丶E    时间: 昨天 14:03
有没有大佬指导一下的




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5