我有一个使用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。 请建议
谢谢
Hi @ jp2code:你到底在哪里发送消息到服务器,在哪里听完?我可能会在接下来的2小时内加快速度。:) – user575219
已更新,读取响应的客户端和发送响应的服务器。当然,您可以将这些回复编辑为您想要的任何内容。我选择了短文“AOK”。 – jp2code
我该如何在传出消息中添加一个httpheader。我可以简单地附加到实际的消息。他们期待这样的事情POST_/OKMMISPOS_HTTP/5.1 的Content-Length:_521 ISA * 00 * ------ * 00 * ------ * ZZ * 500000330 ______ * ZZ * 731476619 ______ * 090303 * 1414 * U * 004 ...我有第二部分到位。不知道发送一个http头文件的最好方法是什么 – user575219