自己更改端口號和ip地址。
使用System.Net;
使用系統。Net . Sockets
靜態void Main(string[] args)//服務器段
{
int port = 2000
string host = " 127 . 0 . 0 . 1 ";
/**/
///創建端點
ip地址ip =地址。解析(主機);//將ip地址字符串轉換為ip address類型的實例。
IPEndPoint ipe = new IPEndPoint(ip,port);//用指定的端口和ip初始化IP終結點類的新實例。
/**/
///創建壹個套接字並開始偵聽。
Socket s =新套接字(AddressFamily。互聯網,SocketType。流,協議類型。TCP);//創建壹個套接字對象。如果使用udp協議,請使用SocketType.Dgram類型的套接字。
南bind(ipe);//綁定端點對象(2000端口和ip地址)
南聽(0);//開始監聽
控制臺。WriteLine("等待客戶端連接");
/**/
///接受客戶端連接,為此連接建立新的套接字,並接受信息。
套接字溫度= s . Accept();//為新連接創建新套接字。
控制臺。WriteLine("建立連接");
string recvStr =
byte[] recvBytes =新字節[1024];
int字節;
字節=溫度。接收(接收字節,接收字節。長度,0);//從客戶端接收信息
recvStr +=編碼。ASCII.GetString(recvBytes,0,bytes);
/**/
///向客戶端返回信息。
控制臺。WriteLine("服務器獲取消息:{0} ",recvStr);//顯示來自客戶端的信息。
string sendStr = "ok!客戶端發送消息成功!”;
byte[] bs =編碼。ASCII . GetBytes(sendStr);
在…之時發(bs,bs。長度,0);//向客戶端返回信息。
在…之時close();
南close();
控制臺。ReadLine();
}
靜態void Main(string[] args)//客戶端
{
嘗試
{
int port = 2000
string host = " 127 . 0 . 0 . 1 ";
/**/
///創建端點
ip地址ip =地址。解析(主機);
//IP address IPP = new IP address(" 127 . 0 . 0 . 1 ");
IPEndPoint ipe = new IPEndPoint(ip,port);//將ip和端口轉換為IPEndpoint實例。
/**/
///創建壹個套接字並連接到服務器。
Socket c =新套接字(AddressFamily。互聯網,SocketType。流,協議類型。TCP);//創建套接字
控制臺。WriteLine("連接…");
c.連接(ipe);//連接到服務器
/**/
///向服務器發送信息
string sendStr = "hello!這是壹個套接字測試”;
byte[] bs =編碼。ASCII . GetBytes(sendStr);//將字符串編碼成字節
控制臺。WriteLine("發送消息");
c.發(bs,bs。長度,0);//發送信息
/**/
///接受服務器返回的信息
string recvStr =
byte[] recvBytes =新字節[1024];
int字節;
bytes = c.Receive(recvBytes,recvBytes。長度,0);//接收服務器返回的信息。
recvStr +=編碼。ASCII.GetString(recvBytes,0,bytes);
控制臺。WriteLine("客戶端獲取消息:{0} ",recvStr);//顯示服務器返回的信息
/**/
///使用後壹定要關閉套接字。
c.close();
}
catch (ArgumentNullException e)
{
控制臺。WriteLine(" argumentNullException:{ 0 } ",e);
}
catch (SocketException e)
{
控制臺。WriteLine("SocketException:{0} ",e);
}
控制臺。WriteLine("按回車鍵退出");
}