tcpclient和tcplistener通信

服务器和客户端的代码都在在vs中编写并运行的,功能上实现了一个客户端和服务器互发消息,如果哪位大神知道多个客户端怎么搞,请留个思路给我,感谢;

服务器的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 简单通信tcpSever
{
    class Program
    {
        static TcpListener tcplistener;
        static TcpClient tcpclient;
        static void Main(string[] args)
        {
            tcplistener = new TcpListener(IPAddress.Parse("127.0.0.1"), 2333);
            tcplistener.Start();//开始侦听连接请求
            Console.WriteLine("服务器启动");
            tcpclient = tcplistener.AcceptTcpClient();//接收来自客户端的连接请求
             Console.WriteLine("有一个客户端连接上了");
             Thread mythread = new Thread(sendMessageToClient);//接收消息和发送消息都单独开一个线程
             mythread.Start();
             Thread youthread = new Thread(receiveMessageFromClient);
             youthread.Start();

        }
        //服务器向客户端发送消息
        static void sendMessageToClient()
        {
            while (true)
            {
                try
                {
                    string sendStr = Console.ReadLine();
                    byte[] mybyte = new byte[1024];
                    mybyte = Encoding.UTF8.GetBytes(sendStr);
                    NetworkStream netS = tcpclient.GetStream();
                    netS.Write(mybyte, 0, mybyte.Length);
                  //  netS.BeginWrite(mybyte,0,1024,AsyncCallback.Combine,);

                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
        //接收从客户端发来的消息
        static void receiveMessageFromClient()
        {
            while (true)
            {
                try
                {
                    NetworkStream ns = tcpclient.GetStream();
                    byte[]mybyte = new byte[1024];
                    ns.Read(mybyte,0,1024);
                    string receiveStr = Encoding.UTF8.GetString(mybyte);
                    Console.WriteLine("服务器从客户端接收的消息:"+receiveStr);
                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
    }
}

客户端的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 简单通信tcpclient
{
    class Program
    {
        static TcpClient tcpclient;
        static void Main(string[] args)
        {
            tcpclient = new TcpClient();
            tcpclient.Connect("127.0.0.1",2333);
            Thread mythread = new Thread(sendMessageToSever); //接收消息和发送消息都单独开一个线程
            mythread.Start();
            Thread youthread = new Thread(receiveMessageFromSever);
            youthread.Start();
        }
        //客户端接收消息
        static  void receiveMessageFromSever()
        {
            while (true)
            {
                try
                {
                    NetworkStream ns = tcpclient.GetStream();
                    byte[] mybyte = new byte[1024];
                    ns.Read(mybyte, 0, mybyte.Length);
                    string receiveStr = Encoding.UTF8.GetString(mybyte);
                    Console.WriteLine("客户端接收来自服务器的消息:" + receiveStr);
                 }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }
            tcpclient.Close();
        }
        //客户端发送消息
        static void sendMessageToSever()
        {
            while (true)
            {
                try
                {
                    string sendStr = Console.ReadLine();
                    byte[] mybyte = new byte[1024];
                    mybyte = Encoding.UTF8.GetBytes(sendStr);
                    NetworkStream netS = tcpclient.GetStream();
                    netS.Write(mybyte, 0, mybyte.Length);

                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
    }
}

本人也是最近才开始研究socket通信,这是其中一种方法,以后再出直接使用socket编程的,如果有哪里写的不对或者代码不好的,欢迎交流一二;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值