简单的Socket编程

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的建立连接及传输数据的过程,离实用相差甚远。

          客户端和服务器都仅能传送和接收一条数据,这显然不是我们想要的服务器。

          接下来的文章会慢慢完善这个程序,敬请期待。

  

猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/81368841