C#学习记录 socket网口通信通用实例

关于socket通信的基本原理和方法在c#学习记录(46)中已经介绍了。下面将大多数书本上都会用到的例子来介绍一下:

一.服务器端:

 

        private TcpListener objTcpListener;//定义一个TCP查询对象
        private NetworkStream objNetworkStream;//网络数据流对象
        private StreamReader objStreamReader;///流读取器
        private StreamWriter objStreamWriter;//流写入器
        private Socket objSocketforClient;//套接字对象
           //启动服务器方法:
         try
            {
                ///IP地址
                IPAddress ipstring = IPAddress.Parse("127.0.0.1");
                objTcpListener = new TcpListener(ipstring,8888);
                objTcpListener.Start();//开始侦听
                MessageBox.Show("服务器已经启动了!");
 
                objSocketforClient = objTcpListener.AcceptSocket();//接受挂起的请求
 
                objNetworkStream = new NetworkStream(objSocketforClient);
 
                objStreamReader = new StreamReader(objNetworkStream);
 
                objStreamWriter = new StreamWriter(objNetworkStream);
                if (objSocketforClient.Connected)
                {
                    MessageBox.Show("客户端已经链接上了!");
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show("服务器发生异常!原因是:" + ex.ToString());
            }
//开始接收数据流方法:

        private void btnReceive_Click(object sender, EventArgs e)
        {
            if (objSocketforClient.Connected)//检查套接字是否连接成功
            {
                if (richTextMain.Text.Trim() != " ")
                {
                    richTextMain.Text += "\n";
                }
                richTextMain.Text += "客户端说:" + objStreamReader.ReadLine();
            }
        }
//发送数据方法:

        private void btnSend_Click(object sender, EventArgs e)
        {
            string strsend = textBoxServer.Text.Trim();
            if (strsend == "")
            {
                MessageBox.Show("不能发送空消息");
                textBoxServer.Focus();
                return;
            }
            try
            {
                objStreamWriter.WriteLine(strsend);///将数据写入到流写入器中
                objStreamWriter.Flush();//刷新数据流
                if (richTextMain.Text.Trim() != "")//如果不为空,则换行
                {
                    richTextMain.Text += "\n";
                }
                richTextMain.Text += "服务器说:" + strsend;///显示发送的数据
            }
            catch (Exception ex)
            {
                MessageBox.Show("发送失败!原因是:" + ex.ToString());
            }
        }

二.服务器端

1.定义变量:

        private TcpClient objTcpClient;
        private NetworkStream objNetworkStream;
        private StreamReader objStreamReader;
        private StreamWriter objStreamWriter;

2.连接服务器

        private void btnConnected_Click(object sender, EventArgs e)
        {
            try
            {
                objTcpClient = new TcpClient("127.0.0.1",8888);
                MessageBox.Show("连接成功!");
            }
            catch 
            {
                MessageBox.Show("连接失败!");
                return;
            }
            objNetworkStream = objTcpClient.GetStream();
            objStreamReader = new StreamReader(objNetworkStream);
            objStreamWriter = new StreamWriter(objNetworkStream);
        }

3.接收消息

4.发送消息

注意:关于发送消息和接收消息的方法,服务器端和客户端一样。要注意代码的移植,对于功能近似的代码尽量提高其移植率,减少低效的工作。这个需要做一个工作,那就是对于自己工作平时经常要用到的模板要制作完善,然后在开发程序的时候,对于合适的功能模块可以快速移植。将工作的注意力放在问题的分析和解决上面。


--------------------- 
作者:打鱼的渔夫wh 
来源:CSDN 
原文:https://blog.csdn.net/shenseyoulan/article/details/81332693 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值