网络基础(二)c#编写简单的网络程序,同步模式,服务端部分

服务器遵照Socket通信的基本流程,先创建Socket,再调用Bind绑定IP地址和端口号,之后调用Listen 等待客户端连接。最后在while循环中调用Accept接收客户端的连接,并回应消息。

(MonoDevelop编写c#)

using System;
using System.Net;
using System.Net.Sockets;      //Socket类为网络通信提供了一套丰富的方法和属性

namespace test1
{
  class MainClass
  {
    public static void Main (string[] args)
    {
      Console.WriteLine ("Hello World!");
      //Socket
      Socket listenfd = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);     //创建一个套接字,三个参数分别代表地址族,套接字类型(stream字节流)和协议
      IPAddress ipAdr = IPAddress.Parse("127.0.0.1");     //服务器ip
      //Bind
      IPEndPoint ipEp = new IPEndPoint (ipAdr,1234);    //服务器端口
      listenfd.Bind (ipEp);   //给套接字listenfd绑定ip和端口
      //Listern
      listenfd.Listen(0);      //开启监听,参数backlog指定队列中最多可容纳等待接受的连接数,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);      //将byte[]数组转换成字符串显示在屏幕上
        Console.WriteLine("[服务器接收]" + str);
        //send
        byte[] bytes = System.Text.Encoding.Default.GetBytes("serv echo " + str);      //服务器把字符串转换成byte[]数组
        connfd.Send(bytes);     //服务器发送数据给客户端
      }
    }
  }
}

写完,点击按钮运行 

  

运行结果

备注:文章内容,代码都来源于 《Unity3D网络游戏实战》(罗培羽 著)这本书 

转载于:https://www.cnblogs.com/bainbian1234/p/11114437.html

你可能感兴趣的:(c#,游戏,网络)