我有一个使用 tcp 套接字发送和接收消息的客户端。他们给了我们一个目标 IP 和端口。为了感受一下,我从一个小型控制台应用程序开始,它既是客户端,也是服务器。我使用了我的 IP 和端口。启动了服务器。然后通过客户端发送一些字符串。我能够在服务器控制台上看到它。这个程序只建立一个单向连接客户端->服务器。我如何实现两种方式?我需要实现一个 tcp 监听器吗?
Server:
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
sck.Bind(localEndpoint);
sck.Listen(100);
Socket accepted = sck.Accept();
Buffer = new byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(Buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString(formatted);
Console.WriteLine(strData);
Console.Read();
sck.Close();
accepted.Close();
}
Client:
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
// IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("68.109.249.167"), 35520);
try
{
sck.Connect(localEndpoint);
}
catch(Exception ex)
{
Console.Write("unable to connect to remote endpoint");
Main(args);
}
Console.Write("Enter Text");
string text=Console.ReadLine();
byte[] data= Encoding.ASCII.GetBytes(text);
sck.Send(data);
Console.Write("Data Sent!\r\n");
Console.Write("Presee any key to continue");
Console.Read();
sck.Close();
}
所以现在这些演示客户端,服务器能够很好地通信。
实际上,听众在哪里发挥作用?我们建立连接并发送一些请求。 sck.Listen(100);
将套接字置于侦听状态。他们会在同一个端口上发送响应吗?我需要使用 Tcplistener 类吗?
http://msdn.microsoft.com/en-us/library/bb397809%28v=vs.90%29.aspx。请建议
谢谢