1.服务器端
- 创建服务器端socket
- 绑定IP和端口号
- 开始监听,等待客户端做连接
- 获取客户端的socket,并与之通信
class Program
{
static void Main(string[] args)
{
//1.创建socket
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.绑定IP和端口号
IPAddress address = new IPAddress(new Byte[] {192,168,56,1});
EndPoint point = new IPEndPoint(address,7788); //封装IP和端口号
server.Bind(point);
//3.开始监听,等待客户端做连接
server.Listen(100); //最大连接数是100
Console.WriteLine("Server: begin to listen!");
//4.获取客户端的socket,并与之通信
Socket clientSocket = server.Accept(); //暂停当前线程,直到客户端连接进来,之后继续执行
//5.向客户端发送数据
clientSocket.Send(Encoding.UTF8.GetBytes("Server: Welcome to Server!"));
//6.接收客户端的数据
byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(message);
Console.ReadKey();
}
2.客户端
- 创建客户端socket
- 发起建立连接的请求
- 接收服务器的消息
- 向服务器发送消息
class Program
{
static void Main(string[] args)
{
//1.创建客户端socket
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.发起建立连接的请求
IPAddress address = IPAddress.Parse("192.168.56.1");
EndPoint point = new IPEndPoint(address, 7788);
client.Connect(point);
//3.接收服务器的消息
byte[] data = new byte[1024];
int length = client.Receive(data); //length表示接收到的数据的长度
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(message);
//4.向服务器发送消息
client.Send(Encoding.UTF8.GetBytes("Client: Give me data!"));
Console.ReadKey();
}
}
3.运行
- 启动服务器端
- 启动客户端
4.运行结果
- 服务器端
- 客户端
注:该程序仅仅为了展示socket的建立连接及传输数据的过程,离实用相差甚远。
客户端和服务器都仅能传送和接收一条数据,这显然不是我们想要的服务器。
接下来的文章会慢慢完善这个程序,敬请期待。