• 入门级:怎么使用C#进行套接字编程(二)


    入门级:怎么使用C#进行套接字编程(一)

    原文地址如下

    C# Server Socket program

    C# Client Socket program

    代码环境:VS2010+Win8.1企业评估版+Framework4.0

    C#套接字编程由两部分组成。

    1、C#服务端套接字程序
    2、C#客户端套接字程序

    服务端套接字编程

    这里的服务端套接字程序是基于c#的控制台程序,实际上该程序作为一个服务端监听客户端的请求。这里我们为服务端套接字指定了端口号8888,他是C#类TcpListener的一个实例,通过该实例调用start()方法。

    TcpListener serverSocket = new TcpListener(8888);
    serverSocket.Start();

    下一步就是创建一个无限循环来监听客户端那边的请求。当服务端套接字接受来自客户端的请求的时候,他会从网络流里读取数据,也会向网络流里写入他对客户端的响应。从下面的C#程序里你会了解如何使用C#创建一个服务端套接字程序。创建一个新的控制台程序项目并将下面的源码放进项目里。

    TcpListener serverSocket = new TcpListener(8888);
    int requestCount = 0;
    TcpClient clientSocket = default(TcpClient);
    serverSocket.Start();
    Console.WriteLine(" >> Server Started");
    clientSocket = serverSocket.AcceptTcpClient();
    Console.WriteLine(" >> Accept connection from client");
    requestCount = 0;
    
    while ((true))
    {
    	try
    	{
    		requestCount = requestCount + 1;
    		NetworkStream networkStream = clientSocket.GetStream();
    		//为什么是65536,因为ReceiveBufferSize大小是65536,设置其大小时未起到作用
    		//暂时就先用其默认大小
    		byte[] bytesFrom = new byte[65536];
    		networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
    		string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
    		dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
    		Console.WriteLine(" >> Data from client - " + dataFromClient);
    		string serverResponse = "Server response " + Convert.ToString(requestCount);
    		Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
    		networkStream.Write(sendBytes, 0, sendBytes.Length);
    		networkStream.Flush();
    		Console.WriteLine(" >> " + serverResponse);
    	}
    	catch (Exception ex)
    	{
    		Console.WriteLine(ex.ToString());
    	}
    }
    
    clientSocket.Close();
    serverSocket.Stop();
    Console.WriteLine(" >> exit");
    Console.ReadLine();

    客户端套接字编程
    C#客户端套接字编程是C#套接字编程的第二部分。该客户端套接字程序是基于窗体应用程序的。客户端连接到服务端套接字程序的端口8888上,因为服务端和客户端运行在同一台机器上,所以我们给出IP地址(主机名)为127.0.0.1。

    clientSocket.Connect("127.0.0.1", 8888);

    当C#客户端程序启动时,他将连接服务端套接字程序并开始从网络流里读取数据和向网络流里写入数据。启动客户端程序时你会获得一个消息提示“客户端已启动”。当你按下客户端窗体底部的按钮时,他将向服务端发送一个消息并且接收来自服务端的响应。

    程序使用:

    先启动服务器端如图:

    再启动客户端如图:

    点击底部的button按钮即可通信。

    demo下载

  • 相关阅读:
    虚拟机centos7下安装Python3.7
    笔试基础题
    虚拟环境的安装和配置
    记录记录每天的知识点和一些疑惑
    利用最小堆实现topk
    windows和虚拟机环境下的centos7进行文件传输
    vscode中命令行创建文件或文件夹|flask搭建环境的配置
    TS的点与区域的写法
    java——集合——Collections工具类——Collections集合工具类的方法——sort(List)
    java——集合——Set集合——可变参数
  • 原文地址:https://www.cnblogs.com/24la/p/csharp-server-client-socket-program.html
Copyright © 2020-2023  润新知