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

来源:互联网 发布:大连淘宝代运营 编辑:程序博客网 时间:2024/05/01 06:15

同步:

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);        }    }

}

原创粉丝点击