2015-12-19 73 views
0

我创建一个小的聊天(1-1)申请学习网络编程和创建套接字时使用TCP协议拒绝后,Socket.Connect()总是返回错误10061 然而,如果我使套接字UDP,我没有看到问题。连接通过TCP套接字错误#10061

这里是我的代码:

myEndPoint = new IPEndPoint(IPAddress.Parse(_txtMyIPAdress.Text), int.Parse(_txtMyPort.Text)); 
TargetSideEndPoint = new IPEndPoint(IPAddress.Parse(_txtTargetIPAddress.Text), int.Parse(_txtTargetPort.Text)); 
mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
mySocket.Bind(myEndPoint); 
mySocket.Connect(TargetSideEndPoint); 
byte[] receivedBuffer = new byte[MAX_BUFFER_SIZE = 1024]; 
ReceivePackets(mySocket, receivedBuffer);//My function 

任何一个能帮助我吗? 更新: 我不使用听()的问题是,当我调用Connect() 我已经尝试过多个端口使用相同的问题,我目前从我的应用程序中打开两个实例,并使用2 1台测试PC上防火墙关闭时不同的端口。

感谢,

+0

可能重复的[TCP套接字错误10061](http://stackoverflow.com/questions/9077606/tcp-socket-error-10061) –

+0

另请检查[此问题](http://stackoverflow.com/questions/9695224 /无连接可待定制的,因为最target机器积极-拒绝-IT-127-0) –

+0

还发布了听众的代码。 –

回答

0

对于TCP,这是一个面向连接的协议,你需要一台服务器和客户端。

服务器必须监听传入连接和客户端应该发起连接。然后,客户端将能够与服务器进行通信并交换数据。

下面是一个简单的工作示例:

void Main() 
{ 
    Console.WriteLine("Starting listener thread"); 
    Thread serverThread = new Thread(ListenerThreadProc); 
    serverThread.Start(); 

    Console.WriteLine("Waiting 500 milliseconds to allow listener to start"); 
    Thread.Sleep(500); 

    Console.WriteLine("Client: Connecting to server"); 
    TcpClient client = new TcpClient(); 
    client.Connect(IPAddress.Loopback, 12345); 
    Console.WriteLine("Client: Connected to server"); 

    byte[] buffer = new byte[5]; 
    Console.WriteLine("Client: Receiving data"); 
    using (NetworkStream clientStream = client.GetStream()) 
     clientStream.Read(buffer, 0, buffer.Length); 

    Console.WriteLine("Client: Received data: " + buffer.Aggregate("", (s, b) => s += " " + b.ToString()));  
} 

void ListenerThreadProc() 
{ 
    TcpListener listener = new TcpListener(IPAddress.Any, 12345); 
    listener.Start(); 
    Console.WriteLine("Server: Listener started"); 

    Console.WriteLine("Server: Waiting for client to connect"); 
    TcpClient client = listener.AcceptTcpClient(); 
    Console.WriteLine("Server: Client connected"); 

    listener.Stop();  
    Console.WriteLine("Server: Listener stopped"); 

    Console.WriteLine("Server: Sending data"); 
    byte[] buffer = new byte[] { 1, 2, 3, 4, 5 }; 
    using (NetworkStream clientStream = client.GetStream()) 
     clientStream.Write(buffer, 0, buffer.Length); 
    Console.WriteLine("Server: Sent data"); 
} 

在这个例子中,做出,因为它得到简单,你有一台服务器接受单个客户端,以它发送一些数据。客户端连接,读取数据,然后显示它。

一个真实的服务器将拆分新的线程(或任务,异步模式),以尽快满足客户的要求为客户端将连接并进行监听新的连接。