TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket()。
2、设置socket属性。
3、绑定本机的IP地址、端口等信息到socket上,用函数bind()。
4、开启监听,用函数listen()。
5、接收客户端上来的连接,用函数accept()。
6、通过accept()返回相应客户端的socket建立专用的通信通道。
7、收发数据,用函数send()和recv(),或者read()和write()。
8、关闭网络连接。
9、关闭监听。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketServer
{
class Server3
{
public static void Main(string[] args)
{
Socket server_socketListen = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ips = IPAddress.Parse("127.0.0.1");
IPEndPoint ipNode = new IPEndPoint(ips, 80);//网络端点:为IP地址和端口号
//服务端必须绑定一个端口才能listen(),要不然客户端就不知道该连哪个端口了
server_socketListen.Bind(ipNode);
//监听后,如果客户端这时调用connect()发出连接请求,服务器端就会接收到这个请求
//listen函数将socket变为被动类型的,等待客户的连接请求。
server_socketListen.Listen(10);
//服务端有两个socket;这里Accept()返回的相当于是客户端的socket,用于和客户端发送(send)和接收(recv)数据
Socket socket_commu = server_socketListen.Accept();
while (true)
{
byte[] buffer = new byte[1024 * 1024];
//接收数据到缓存buffer
int num = socket_commu.Receive(buffer);
string str = Encoding.UTF8.GetString(buffer, 0, num);
Console.WriteLine("收到客户端数据 : " + str);
//发送消息到客户端。
socket_commu.Send(Encoding.UTF8.GetBytes("服务端:" + str));
}
}
}
}