📄 echoserversocket.cs
字号:
using System;
using System.Net;
using System.Net.Sockets;
class EchoServerSocket
{
public static void Main()
{
//声明用来记录服务器端Socket及用户端Socket对象的变量
Socket serverSocket,theConnection;
//声明一记录本地端IP地址的变量
IPHostEntry bindAddress;
//声明一记录IP地址及通信端口号的变量
IPEndPoint myHost;
//创建一个Socket对象
serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//获取本地端的计算机名称
String hostName = Dns.GetHostName();
//产生一个IPAddress对象
bindAddress = Dns.Resolve(hostName);
try
{
myHost = new IPEndPoint(bindAddress.AddressList[0],7);
}
catch(ArgumentException e)
{
//若通信端口号大于最大值时显示出错误信息
Console.WriteLine("Invalid port number!!");
//退出程序
return;
}
try
{
//绑定所指定的接口
serverSocket.Bind(myHost);
//开始侦听指定接口上的网络请求
serverSocket.Listen(100);
}
catch(SocketException se)
{
Console.WriteLine("Could not bind to specified interface!!");
return;
}
//显示成功侦听信息
Console.WriteLine("Echo Server has been created successfully!!");
Console.WriteLine("Waiting for client connection..............");
while(true)
{
//当侦听到有用户端连接时,调用Accept以完成连接的操作
theConnection = serverSocket.Accept();
//显示用户端Socket的相关信息
PrintClientInfo((IPEndPoint)theConnection.RemoteEndPoint);
int bytes = 0;
Byte[] RecvBytes = new Byte[256];
while(true)
{
try
{
//读取用户端所送出来的数据
bytes = theConnection.Receive(RecvBytes,RecvBytes.Length,0);
}
catch(SocketException se)
{
Console.WriteLine("Data receive error!!");
break;
}
//若读取失败则退出循环
if (bytes == 0) break;
try
{
//将所读取到的数据RecvBytes原封不动的送回
theConnection.Send(RecvBytes,bytes,0);
}
catch(SocketException se)
{
Console.WriteLine("Data send error!!");
break;
}
}
//关闭与用户端的连接
theConnection.Close();
Console.WriteLine("Client is disconnect......");
}
}
//显示用户端Socket信息的method
public static void PrintClientInfo(IPEndPoint clientEP)
{
//获取用户端Socket的IP地址
IPAddress clientIP = clientEP.Address;
Console.WriteLine("We have a client connected from IP:" +clientIP.ToString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -