使用C#开发Socket通讯
2007年03月24日 星期六 下午 06:45
下面的示例显示如何使用 Socket 类向 HTTP 服务器发送数据和接收响应。
[C#] public string DoSocketGet(string server) { //Sets up variables and a string to write to the server Encoding ASCII = Encoding.ASCII; string Get = "GET / HTTP/1.1/r/nHost: " + server + "/r/nConnection: Close/r/n/r/n"; Byte[] ByteGet = ASCII.GetBytes(Get); Byte[] RecvBytes = new Byte[256]; String strRetPage = null; // IPAddress and IPEndPoint represent the endpoint that will // receive the request. // Get the first IPAddress in the list using DNS. IPAddress hostadd = Dns.Resolve(server).AddressList[0]; IPEndPoint EPhost = new IPEndPoint(hostadd, 80); //Creates the Socket for sending data over TCP. Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); // Connects to the host using IPEndPoint. s.Connect(EPhost); if (!s.Connected) { strRetPage = "Unable to connect to host"; return strRetPage; } // Sends the GET text to the host. s.Send(ByteGet, ByteGet.Length, SocketFlags.None); // Receives the page, looping until all bytes are received Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0); strRetPage = "Default HTML page on " + server + ":/r/n"; strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes); while (bytes > 0) { bytes = s.Receive(RecvBytes, RecvBytes.Length, SocketFlags.None); strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes); } //如果想立即关闭连接则调用 s.Close(); return strRetPage; } |