C#创建TCP/IP服务端和客户端,含测试demo及源码

网上的TCP/IP创建服务端和客户端的方法鱼龙混杂,自己把在使用项目中的TCP服务端和客户端的代码抽了出来,做了demo,以供大家使用参考。

为了方便调用,我把一些基础方法都整合封装到了Reader.dll中,直接调用方法即可,非常方便(伸手党直接下源码运行即可)

源码下载地址:https://download.csdn.net/download/horseroll/10444188

源码中包含dll文件,直接下载源码即可

dll文件下载地址:https://download.csdn.net/download/horseroll/10444167

源码程序运行使用方法:先打开服务端,再打开客户端,然后即可互相发送信息

效果图:


1.客户端编写

客户端连接方法使用readerCamera.ConnectServer方法,监听事件为ReceiveDataCamera,发送信息为readerCamera.ServerSendMessage方法

public partial class Client : Form
{
    private Reader.ReaderMethod readerCamera;//摄像头采集类
    public Client()
    {
        InitializeComponent();
        //初始化访问实例
        readerCamera = new Reader.ReaderMethod();
        //回调函数
        readerCamera.ReceiveCallback = ReceiveDataCamera;
    }

    private void btnopenclient_Click(object sender, EventArgs e)
    {
        string strLog = string.Empty;
        string strException = string.Empty;
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");//监听的ip地址
        int nPort = 55;//监听的端口号
        int nRet = readerCamera.ConnectServer(ipAddress, nPort, out strException);
        if (nRet != 0)//如果连接摄像头失败
        {
            strLog = "连接摄像头失败,请确认是否已打开服务端,失败原因: " + strException;
        }
        else
        {
            strLog = "成功连接摄像头"+ipAddress+":"+nPort;
        }
        WriteLog(richTextBox1, strLog);
    }
    /// <summary>
    /// 客户端接收数据
    /// </summary>
    /// <param name="btAryReceiveData"></param>
    private void ReceiveDataCamera(byte[] btAryReceiveData)
    {
        string str = System.Text.Encoding.Default.GetString(btAryReceiveData);//数据接收转string
        //richTextBox1.AppendText("接收到数据:" + str);直接调用该方法会出现跨线程调用问题
        WriteLog(richTextBox1, "接收到数据:" + str);
    }

    private void btnclientsend_Click(object sender, EventArgs e)//发送数据
    {
        readerCamera.ServerSendMessage(System.Text.Encoding.Default.GetBytes(tbclient.Text));//发送数据
    }
}

2.服务端编写

服务端连接方法使用readerCameraOpenServer方法,监听事件为ReceiveDataCamera,发送信息为readerCamera.ServerSendMessage方法

public partial class Server : Form
{
    private Reader.ReaderMethod readerCamera;//摄像头采集
    public Server()
    {
        InitializeComponent();
        Client client = new Client();
        client.Show();
        //初始化访问读写器实例
        readerCamera = new Reader.ReaderMethod();
        //回调函数
        readerCamera.ReceiveCallback = ReceiveDataCamera;
    }
    private void btnopenserver_Click(object sender, EventArgs e)
    {
        readerCamera.OpenServer(55);//打开服务端,监听端口55
        WriteLog(richTextBox1,"打开端口55成功");//点击事件中调用该写入方法不会报错
    }
    /// <summary>
    /// 服务器接收数据
    /// </summary>
    /// <param name="btAryReceiveData"></param>
    private void ReceiveDataCamera(byte[] btAryReceiveData)
    {
        string str = System.Text.Encoding.Default.GetString(btAryReceiveData);//数据接收转string
        //richTextBox1.AppendText("接收到数据:" + str);直接调用该方法会出现跨线程调用问题
        WriteLog(richTextBox1,"接收到数据:" + str);
    }
    /// <summary>
    /// 发消息
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btnserversend_Click(object sender, EventArgs e)
    {
        readerCamera.ServerSendMessage(System.Text.Encoding.Default.GetBytes(tbserver.Text));//发送数据
    }
}

猜你喜欢

转载自blog.csdn.net/horseroll/article/details/80491460