我有一個使用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