詳細代碼請看示例代碼html
//建立套接字 IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port); //也能夠使用IPAddress.Any,監聽全部網絡接口上的客戶端活動 //https://docs.microsoft.com/en-us/dotnet/api/system.net.ipaddress.any?view=netframework-4.7.2 //通常來講,服務端套接字都是直接bind端口,不會顯式指明ip地址 //不然切換了服務器還須要修改,或者也能夠動態獲取IP,可是不必 IPEndPoint ipe2 = new IPEndPoint(IPAddress.Any, port); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); //https://www.codeproject.com/Articles/117557/Set-Keep-Alive-Values //http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html SetTcpKeepAlive(socket, 600000, 1000); //綁定端口和IP socket.Bind(ipe); //設置監聽數 socket.Listen(10); //鏈接客戶端 await AsyncAccept(socket);
//端口及IP IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port); //建立套接字 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //開始鏈接到服務器 client.BeginConnect(ipe,async asyncResult => { client.EndConnect(asyncResult); //向服務器發送消息 await AsynSend(client, "你好我是客戶端"); await AsynSend(client, "第一條消息"); await AsynSend(client, "第二條消息"); //接受消息 await AsynRecive(client); }, null);
1.在其上下文中,該請求的地址無效
遇到這個問題是在正式服務器上,在測試服務器上運行良好,因此考慮是機器或者網絡配置的問題,包括出入站規則、防火牆、端口映射、端口轉向等
不是太懂運維的內容,因此對代碼進行了修改
把具體的IP改成了IPAddress.Any的寫法則運行正常git
//報錯 IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipaddress), port);
//正確 IPEndPoint ipe = new IPEndPoint(IPAddress.Any, port);
在其上下文中,該請求的地址無效github
示例代碼c#