C# TCP双向通信

本文编写了一个简单的TCP通信winform控制台例程:

服务器写法:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace TCPserver
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            /*固定写法*/
            IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 42, 27 }); //win+R ---cmd --ipconfig--看你的IPv4的IP,因为是字节用逗号分割
            IPEndPoint iPEndPoint = new IPEndPoint(ipAddress, 7788); //ip + 端口号  //服务器IP +端口


            tcpServer.Bind(iPEndPoint); //绑定
            tcpServer.Listen(100); //监听
            Console.WriteLine("服务器提示:开始等待客户端连接:");

            Socket client = tcpServer.Accept();  //已连接上的客户端对象。 如果没连上 程序会卡在Accept()这里一直等
            Console.WriteLine("服务器提示:一个客户端连接过来...");



            //接收部分
            byte[] data = new byte[1024];
            int recive_length = client.Receive(data); //,函数自带返回值,真实收到多少数据长度 会返回给recive_length ,数据存在data里
            String recive_mesaagr = Encoding.UTF8.GetString(data);
            Console.WriteLine("收到客户端发送消息为:" + recive_mesaagr); //把收到的byte 变成 string


            //发送部分
            string strSendMessage = "服务器发送的消息:欢迎你!";
            client.Send(Encoding.UTF8.GetBytes(strSendMessage)); //规定双方通信用 byte 收到byte再自己解包变成string

            client.Close();
            tcpServer.Close();


        }
    }
}

客户端写法:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace TCPclient
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            /*固定写法*/
            IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 42, 27 }); //win+R ---cmd --ipconfig--看你的IPv4的IP,因为是字节用逗号分割
            IPEndPoint iPEndPoint = new IPEndPoint(ipAddress, 7788); //ip + 端口号  //客户端IP +端口

            Console.WriteLine("客户端提示----开始连接服务器");
            tcpClient.Connect(iPEndPoint); //连接

            Console.WriteLine("客户端提示----成功连接上服务器..");


            //发送部分
            string strSendMessage = "客户端发送的消息:你好!来自客服端.....";
            tcpClient.Send(Encoding.UTF8.GetBytes(strSendMessage)); //规定双方通信用 byte 收到byte再自己解包变成string

            //接收部分
            byte[] data = new byte[1024];
            int recive_length = tcpClient.Receive(data); //,函数自带返回值,真实收到多少数据长度 会返回给recive_length ,数据存在data里

            Console.WriteLine("收到服务器发送消息为:"+ Encoding.UTF8.GetString(data)); //把收到的byte 变成 string



            tcpClient.Close(); //用完要关闭

        }
    }
}

运行结果:

服务器:

客户端:

但是这只是 服务器连接一个客户端的写法,要是想用服务器连接多个客户端,还需用到线程,一个线程负责接收,一个线程负责发送....

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耐心195

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值