简单socket服务(三)实现多客户端向服务器发送数据并保证服务器接收到数据
2013-02-12 21:22
946 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace MyAsyncClient { class Program { static void Main(string[] args) { startClient(); } public static ManualResetEvent connEvent = new ManualResetEvent(false); public static ManualResetEvent receiveEvent = new ManualResetEvent(false); public static ManualResetEvent sendEvent = new ManualResetEvent(false); public static byte[] byteData = new byte[1024]; public static void startClient() { IPAddress ipAddress = IPAddress.Parse("192.168.1.101"); IPEndPoint ipEnd = new IPEndPoint(ipAddress,1002); Socket client = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); Console.WriteLine("client is start!"); client.BeginConnect( ipEnd, new AsyncCallback(ConnectedCallback), client); connEvent.WaitOne(); } public static void ConnectedCallback(IAsyncResult asyncResult) { Socket client = (Socket)asyncResult.AsyncState; Console.WriteLine("connected to server:"+client.RemoteEndPoint); client.EndConnect(asyncResult); //connEvent.Set(); string mess; while((mess=Console.ReadLine())!="exit") //for (int i= 0; i < 10; i++) { send(client,mess+"\r\n"); } } public static void send(Socket client,string message) { byteData = Encoding.ASCII.GetBytes(message); Console.WriteLine("send a message:"+message); client.BeginSend( byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), client); //sendEvent.WaitOne(); } public static void SendCallback(IAsyncResult asyn) { Socket client = (Socket)asyn.AsyncState; client.EndSend(asyn); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; namespace MyAsyncServer { class Program { private static byte[] byteData = new byte[1024]; static void Main(string[] args) { startListen(); } public static ManualResetEvent connEvent = new ManualResetEvent(false); public static ManualResetEvent receiveEvent = new ManualResetEvent(false); public static ManualResetEvent sendEvent = new ManualResetEvent(false); public static void startListen() { try { IPAddress ipAddress = IPAddress.Parse("192.168.1.101"); IPEndPoint ipEnd = new IPEndPoint(ipAddress, 1002); Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(ipEnd); serverSocket.Listen(10); Console.WriteLine("server is start!"); while (true) { connEvent.Reset(); serverSocket.BeginAccept( new AsyncCallback(AcceptedCallback), serverSocket); connEvent.WaitOne(); } } catch (Exception) { throw; } } public static void AcceptedCallback(IAsyncResult asynResult) { connEvent.Set(); Socket server = (Socket)asynResult.AsyncState; Socket handler = server.EndAccept(asynResult); Console.WriteLine("a client is connected:"+handler.RemoteEndPoint); server.BeginAccept( new AsyncCallback(AcceptedCallback), server); Receive(handler); } public static void Receive(Socket handler) { handler.BeginReceive( byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(ReceivedCallback), handler); } public static void ReceivedCallback(IAsyncResult asynResult) { Socket handler = (Socket)asynResult.AsyncState; int length = handler.EndReceive(asynResult); string receivedString = Encoding.ASCII.GetString(byteData, 0, length); Console.WriteLine("received message:" + receivedString); handler.BeginReceive( byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(ReceivedCallback), handler); } } }
相关文章推荐
- 简单socket服务(二)实现多客户端向服务器发送数据
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- Socket通信简单实现客户端-服务器消息发送
- socket服务器发送大数据,客户端循环接收
- AsyncSocket(简单的实现与服务器的发送消息,接收消息)
- 一个简单的socket服务端和客户端程序:客户端发送数据给服务端,服务端接收到数据后再给客户端发送数据
- socket编程,实现简单的客户端服务器端发送数据
- 数据报实现简单的客户端发送数据,服务端接收数据
- python socket实现简单的(TCP/UDP)服务器/客户端
- TCP SOCKET服务器|客户端简单实现
- Android客户端 和 pc服务器 建立socket连接并发送数据
- Scoket异步套接字编程,在客户端实现数据的发送和接收
- java实现了简单的Echo服务程序分服务器和客户端
- 用socket实现客户端与服务器端的通信,要求在客户发送数据后能够回显相同的数据。
- Java编写一个简单的TCP通信程序。服务器发送一条字符串,客户端接收该信息并显示。
- 一个简单的可以接收TCP服务器数据的TCP客户端
- 在VB.NET下利用Socket实现简单的字符串发送接收程序
- 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中
- 本程序说明了如何建立一个简单的可以接收UDP服务器数据的UDP客户端
- 通过python下的socket实现组播数据的发送和接收