简单的同步Socket程序服务端
首先,Socket是.Net提供的
System.Net.Sockets命名空间的Scoket类为网络通信提供了一套丰富的方法和属性
服务器按照Socket的基本流程
先创建Socket
在用Bind绑定IP地址和端口号
之后用Listen等待客户端链接
最后在while循环中调用Accept接收客户端的链接
并回应消息
using System; using System.Net; using System.Net.Sockets; class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World"); //Socket Socket listenfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //Bind IPAddress ipAdr = IPAddress.Parse("127.0.0.1"); IPEndPoint ipEp = new IPEndPoint(ipAdr,1234); listenfd.Bind(ipEp); //Listen listenfd.Listen(0); Console.WriteLine("[服务器]启动成功"); while (true) { //Accept Socket connfd = listenfd.Accept(); Console.WriteLine("[服务器]Accept"); //Recv byte[] readBuff = new byte[1024]; int count = connfd.Receive(readBuff); string str = System.Text.Encoding.UTF8.GetString(readBuff,0,count); Console.WriteLine("[服务器接收]" + str); //Send byte[] bytes = System.Text.Encoding.Default.GetBytes("serv echo " + str); connfd.Send(bytes); } } }
注释:
1.Socket listenfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
它的3个参数分别代表地址族、套接字类型和协议
地址族指明是使用IPv4还是IPv6
2.Bind(ipEp)
将listenfd套接字绑定IP和端口。
3.Listen(0)
服务端开始监听,参数backlog制定队列中最多可容纳等待接受的连接数,0表示不受限制
4.Accept
服务器用来接收客户端链接。当没有客户端链接时,服务器程序会卡住,不会往下执行
5.Receive
服务器用来接收客户端数据
6.Send
服务器用来发送数据,参数为byte[]类型
可用System.Text.Encoding.Default.GetBytes(string);
将string类型转换为byte[]类型