Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#多个套接字在不同线程上使用同一端口_C#_Multithreading_Sockets - Fatal编程技术网

C#多个套接字在不同线程上使用同一端口

C#多个套接字在不同线程上使用同一端口,c#,multithreading,sockets,C#,Multithreading,Sockets,我有多个线程使用多个套接字,但都指向一个端口。行吗?我看到一些线程说多个应用程序不能使用相同的端口,但我不确定它是否直接解决了这个问题 代码示例 static IPEndPoint b = new IPEndPoint(IPADRESS, PORT); static Thread listenThread = new Thread(listen); static Thread sendThread = new Thread(send);

我有多个线程使用多个套接字,但都指向一个端口。行吗?我看到一些线程说多个应用程序不能使用相同的端口,但我不确定它是否直接解决了这个问题

代码示例

       static IPEndPoint b = new IPEndPoint(IPADRESS, PORT);
       static Thread listenThread = new Thread(listen);
       static Thread sendThread = new Thread(send);

       static void listen(){
          Socket socket = new Socket;
            socket.bind(b);
          while(exit == false){

          Socket.listen(10);
           //handle Data

                }

           static void send(){
          Socket socket = new Socket;
            socket.bind(b);
          while(exit == false){

          Socket.send(msg)
                }

如果在同一端口上只有一个侦听线程和一个发送线程,则可以。但是,如果有多个线程,则让一个线程侦听端口,并将接收到的任何内容推送到队列中。其他线程应该从队列中读取。

这里有一个非常好的答案,它总结了这一切:最初你是说套接字可以与不同线程上的同一端口同时使用。只有一个线程可以侦听端口,但另一个线程可以通过同一端口发送。因此,两个线程、两个套接字、一个读取、一个写入,但都共享同一端口