同步网络传输和异步网络传输

同步:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;

namespace NewTcpServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Server server = new Server();
            server.StartUp();
        }
    }

    public class Server
    {
        private TcpListener _server;
        private string _ip = "192.168.xx.xx";
        private int _port = 10000;

        public void StartUp()
        {
            _server = new TcpListener(new IPEndPoint(IPAddress.Parse(_ip), _port));
            _server.Start();
            Thread acceptTcpClientThread = new Thread(AcceptTcpClient);
            acceptTcpClientThread.Start();
        }

        public void AcceptTcpClient()
        {
            while (true)
            {
                TcpClient client = _server.AcceptTcpClient();
                Thread receiveMsgThread = new Thread(ReceiveMsg);
                receiveMsgThread.Start(client);
            }

        }

        public void ReceiveMsg(object obj)
        {
            TcpClient client = obj as TcpClient;
            byte[] buffer = new byte[client.ReceiveBufferSize];
            while(true)
            {
                NetworkStream stream = client.GetStream();
                int len = stream.Read(buffer, 0, client.Available);
                Console.WriteLine(Encoding.UTF8.GetString(buffer, 0,len));
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;

namespace NewTcpClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Client client = new Client();
            client.StartUp();
            while(true)
            {

            }
        }
    }

    public class Client
    {
        private string _ip = "192.168.XX.XX";
        private int _port = 10000;
        private TcpClient _client;

        public void StartUp()
        {
            _client = new TcpClient();
            _client.Connect(_ip, _port);

            NetworkStream stream = _client.GetStream();
            string str = "客户端信息";
            Byte[] msg = Encoding.UTF8.GetBytes(str);
            stream.Write(msg, 0, msg.Length);
        }
    }
}

异步:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;

namespace NewTcpServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Server server = new Server();
            server.StartUp();
            while(true)
            {

            }
        }
    }

    public class Server
    {
        private TcpListener _server;
        private string _ip = "192.168.xx.xx";
        private int _port = 10000;
        private byte[] buffer = new byte[64 * 1024];

        public void StartUp()
        {
            _server = new TcpListener(new IPEndPoint(IPAddress.Parse(_ip), _port));
            _server.Start();
            _server.BeginAcceptTcpClient(AcceptedTcpClient, _server);
        }

        public void AcceptedTcpClient(IAsyncResult ar)
        {
            TcpListener server =  ar.AsyncState as TcpListener;
            TcpClient client = server.EndAcceptTcpClient(ar);

            NetworkStream networkStream = client.GetStream();
            networkStream.BeginRead(buffer, 0, buffer.Length, ReceivedMsg, client);

            _server.BeginAcceptTcpClient(AcceptedTcpClient, _server);
        }

        public void ReceivedMsg(IAsyncResult ar)
        {
            TcpClient client = ar.AsyncState as TcpClient;
            NetworkStream networkStream = client.GetStream();
            int len = networkStream.EndRead(ar);
            byte[] msg = new byte[len];
            Array.Copy(buffer, 0, msg, 0, len);
            Console.WriteLine(Encoding.UTF8.GetString(msg));
            networkStream.BeginRead(buffer, 0, buffer.Length, ReceivedMsg, client);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;

namespace NewTcpClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Client client = new Client();
            client.StartUp();
            while(true)
            {

            }
        }
    }

    public class Client
    {
        private string _ip = "192.168.xx.xx";
        private int _port = 10000;
        private TcpClient _client;

        public void StartUp()
        {
            _client = new TcpClient();
            _client.BeginConnect(_ip, _port, ConnectedServer, _client);
        }

        public void ConnectedServer(IAsyncResult ar)
        {
            TcpClient client = ar.AsyncState as TcpClient;
            client.EndConnect(ar);

            NetworkStream networkStream = client.GetStream();
            string str = "客户端信息";
            byte[] bytes = Encoding.UTF8.GetBytes(str);
            networkStream.BeginWrite(bytes, 0, bytes.Length,EndWrite, networkStream);
        }

        public void EndWrite(IAsyncResult ar)
        {
            NetworkStream networkStream = ar.AsyncState as NetworkStream;
            networkStream.EndWrite(ar);
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值