(C#)两个Socket可以同时监听同一个端口吗?

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:57:48
我在做一个聊天系统,服务器一直监听port1来接收客户端的请求;而当服务器需要向客户端发送数据时可以使用port1吗?
可以的话怎样实现呢?

还有在C#中,可以知道本机系统中有哪些端口是没有被使用的吗?

因为我怕如果我在程序中已经指定了一个端口号,那么正巧这个端口已经被使用了,这样的话可能就会出现异常.而且就算这次没有出现异常,但下次、或者把我的系统拿到其它机上运行,可能就会有问题了。
二楼说的"客户段来连服务器,就会自己随机打开个端口",那么客户端是怎样随机打开一个端口啊,是已经指定了一个端口了,要通讯时就使用它这样吗?

可以写上代码吗?

还有一点,我的是无连接的.(UDP)

通常是不行的。应该没有更好的解决方案
一般把port指定一个较大的端口号吧。。。
如果可能,把port做成可以在UI配置的。这样默认情况下使用一个,如果有冲突地话使用另一个。。
百分之九十九的情况下不会出现冲突的。。
你可以看下很多软件都是可以更改端口好的,也是这个原因。。

没啥冲突的,客户段来连服务器,就会自己随机打开个端口,创建一个连接,服务端创建一个线程,跟该客户端进行交互。
你必须指定一个端口作为服务端端口。如果不固定,客户端怎么知道往哪连啊?1-65535,挑个高端号。甚至你在自己服务器上 netstat -na,看用了哪些TCP口,没在里面出现的都可以用。

貌似不可以吧?一个开始监听的时候,端口就已经被占用了,其他就不能再用了。

这个问题,我看过别人写的一个程序,好像是查询当前可用sco,是一个类,但查询出来的不是端口号,是从0逐渐增加的数字,现在还不明白是怎么回事!还在研究中,可能是你这个问题的答案!

找了一个例子: