public void ReadyConnect(string serverIPAddress, string clientIPAddress, int remoteport, int Localport)
{
var serveripAddress = IPAddress.Parse(serverIPAddress);
var clientipAddress = IPAddress.Parse(clientIPAddress);
tcpRemoteEndPoint = new IPEndPoint(serveripAddress, remoteport);
tcpLocalEndPoint = new IPEndPoint(clientipAddress, Localport);
_TcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_TcpSocket.Bind(tcpLocalEndPoint);
BeginConnect();
}
public void BeginConnect()
{
if(_TcpSocket.Connected)
{
TcpProtocolUtils.ShutDownSocket(_TcpSocket);
_TcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_TcpSocket.Bind(tcpLocalEndPoint);
}
TcpNetLogger.Log("Tcp開始嘗試連接...");
var tcpConnectionSaea = new SocketAsyncEventArgs();
tcpConnectionSaea.RemoteEndPoint = tcpRemoteEndPoint;
tcpConnectionSaea.Completed += OnTcpConnectComplete;
if (!_TcpSocket.ConnectAsync(tcpConnectionSaea))
{
OnTcpConnectComplete(this, tcpConnectionSaea);
}
}
因為專案需要,上面代碼是客戶端的連接之前需要本地系結一個IP和埠號。但是使用發現,退出程式時,我進行了
socket.Shutdown(SocketShutdown.Both);
socket.Close();
這兩步操作。
但是重開程式之后socket.error會報AddressAlreadyInUse