
C#socket 客户端与服务器问题
打开一个客户端时,运行正常,当打开两个或以上时,只有第一个有效,是socket被占,还是端口?该怎么解决...
打开一个客户端时,运行正常,当打开两个或以上时,只有第一个有效,是socket被占,还是端口?该怎么解决
展开
展开全部
服务器端改:
当接收一个用户的连接时 用线程的方式发送消息回去
连接个数和socket.Listen(5); 有关 5就是处理的连接数
Socket newSocket=socket.Accept();
newSocket.Receive(byteMessage);
这里如果没用到多线程就出现你那种情况 当第一台机器和服务器连接后 该方法一直被占用 一直到客户端注销。。所以当第二台机器连接时候不会有任何反应。。。
代码示例:
private void BeginListen()
{
IPAddress ServerIp = GetServerIP();
IPEndPoint iep = new IPEndPoint(ServerIp, 8000);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] byteMessage = new byte[100];
socket.Bind(iep);
// do
while (true)
{
try
{
socket.Listen(5);
Socket newSocket = socket.Accept();
newSocket.Receive(byteMessage);
string sTime = DateTime.Now.ToShortTimeString();
string msg = sTime + ":" + "Message from:";
msg += newSocket.RemoteEndPoint.ToString() + Encoding.Default.GetString(byteMessage);
}
catch
{
}
}
// while(byteMessage!=null);
}
//上面写的是服务器监听方法:
调用方法用线程开启
System.Threading.Thread mythread = new System.Threading.Thread(new ThreadStart(BeginListen));
mythread.Start();
该方法可以写在程序启动时候。。。
当接收一个用户的连接时 用线程的方式发送消息回去
连接个数和socket.Listen(5); 有关 5就是处理的连接数
Socket newSocket=socket.Accept();
newSocket.Receive(byteMessage);
这里如果没用到多线程就出现你那种情况 当第一台机器和服务器连接后 该方法一直被占用 一直到客户端注销。。所以当第二台机器连接时候不会有任何反应。。。
代码示例:
private void BeginListen()
{
IPAddress ServerIp = GetServerIP();
IPEndPoint iep = new IPEndPoint(ServerIp, 8000);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] byteMessage = new byte[100];
socket.Bind(iep);
// do
while (true)
{
try
{
socket.Listen(5);
Socket newSocket = socket.Accept();
newSocket.Receive(byteMessage);
string sTime = DateTime.Now.ToShortTimeString();
string msg = sTime + ":" + "Message from:";
msg += newSocket.RemoteEndPoint.ToString() + Encoding.Default.GetString(byteMessage);
}
catch
{
}
}
// while(byteMessage!=null);
}
//上面写的是服务器监听方法:
调用方法用线程开启
System.Threading.Thread mythread = new System.Threading.Thread(new ThreadStart(BeginListen));
mythread.Start();
该方法可以写在程序启动时候。。。
展开全部
端口被占用..客户端不要指定端口.使用自动分配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
端口被占用,你应该参考一下网上“完成端口技术”的文章,一般也有对应的源代码,如果要随机分配端口的话几乎无可避免的要使用多线程,完成端口技术其实并不只针对这一类应用,你看完了就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询