请求socket编程例子 能发送数据和接收数据的例子最好是异步的学习一下谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 server:using System;using System.Collections.Generic;using System.Text;using System.Net;using System.Net.Sockets; //可以使用套接字using System.Threading; //可以使用多线程namespace threadtcpclient{ /// <summary> /// 服务器监听类,用于监听客户端连接,把建立好连接的socket传递给ClientThread类接受数据 /// </summary> class Threadtcpserver { private Socket server; public Threadtcpserver() { IPEndPoint iep = new IPEndPoint(IPAddress .Any ,3130); server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 将套接字与本地终结点绑定 server.Bind(iep); //在本地3130端口号上进行监听 server.Listen(1000); Console.WriteLine("等待客户机进行连接......"); while (true) { // 得到包含客户端信息的套接字,无接入时回阻塞在这 Socket client = server.Accept(); //创建消息服务线程对象 ClientThread newclient = new ClientThread(client); //把ClientThread 类的ClientService方法委托给线程 Thread newthread = new Thread(new ThreadStart(newclient.ClientService)); // 启动消息服务线程 newthread.Start(); } } static void Main(string[] args) { Threadtcpserver instance = new Threadtcpserver(); } } /// <summary> /// 接收类,有建立了连接的socket句柄,负责接受发送数据 /// </summary> public class ClientThread { public Socket service; public static int connections = 0;//连接数 public string c_ip;//客户端的ip信息 int receive_bytes; public ClientThread(Socket clientsocket) { //service对象接管对消息的控制 this.service = clientsocket; } public void ClientService() { String data = null; byte[] bytes = new byte[1024]; if (service != null) { connections++; IPEndPoint iep = service.RemoteEndPoint as IPEndPoint; c_ip=iep.Address .ToString ()+":"+iep .Port .ToString (); } Console.WriteLine("与客户端[{1}]连接建立,现在连接数{0}", connections,c_ip); try { while ((receive_bytes = service.Receive(bytes)) != 0) { data = System.Text.Encoding.ASCII.GetString(bytes, 0, receive_bytes); Console.WriteLine("收到[{1}]的数据: {0}", data, c_ip); // 处理客户端发来的消息,这里是转化为大写字母 data = data.ToUpper(); byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); // 发送一条应答消息 service.Send(msg); Console.WriteLine("发送的数据: {0}", data); } } catch (Exception receive_send) { //一般是Socket.SocketException //Console.WriteLine(receive_send.ToString ()); Console.WriteLine("远程客户端[{0}]异常关闭连接",c_ip); } finally { //关闭套接字 service.Close(); connections--; Console.WriteLine("与客户端[{1}]断开连接,现在有{0} 个连接数", connections, c_ip); } } }}client:using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Net;using System.Net.Sockets;namespace NetworkStreamClient{ class Program { static void Main(string[] args) { try { TcpClient newclient = new TcpClient(); newclient.Connect("localhost",3130);//可改成ip地址 NetworkStream stm = newclient.GetStream(); byte[] sendbytes = Encoding.ASCII.GetBytes("data is coming"+" here."); ; stm.Write(sendbytes, 0, sendbytes.Length); newclient.Close(); Console.Read(); } catch (Exception e) { //输出异常信息 Console.WriteLine(e.ToString()); Console.Read(); } finally { } } 给你个 TCP异步的方法把~~http://blog.csdn.net/zgke/archive/2009/01/20/3838844.aspx //本机ip地址 private string localIP; //本机监听端口号 private int localPort = 0; //服务器端ip地址 private string serverIP; //服务器端端口号 private int serverPort = 0; //网络通讯对象实例 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//实例化Socket /// <summary> /// UDP发送函数 /// </summary> /// <param name="send_message">发送的信息体</param> /// <returns>终端返回的UDP数据包,数据类型:字节数组,没有返回值时为空数组</returns> public byte[] sendMessage(byte[] send_message, bool waite) { IPAddress selfIP = IPAddress.Parse(localIP); IPEndPoint selfEP = new IPEndPoint(selfIP, 0); IPAddress sIP = IPAddress.Parse(serverIP); IPEndPoint serverEP = new IPEndPoint(sIP, serverPort); int count = 0; serverEP = new IPEndPoint(sIP, serverPort); EndPoint remort = (EndPoint)serverEP; socket.SendTo(send_message, send_message.Length, SocketFlags.None, serverEP);//发送指令 if (waite == false) { return null; } //socket.ReceiveTimeout = time; byte[] result = new byte[1024]; try { count = socket.ReceiveFrom(result, result.Length, SocketFlags.None, ref remort);//接收指令 byte[] newResult = new byte[count]; Array.Copy(result, newResult, count); return newResult; } catch { return null; } } http://www.cnblogs.com/ltp/archive/2005/12/03/289680.htmlhttp://www.cnblogs.com/rainlake/archive/2005/09/06/230753.html楼主请参考 关于ResourceWriter文件占用问题 【求助】C#调用带指针参数的dll c# 如何打开一个c中创建的Event 100分求教怎么用HttpWebRequest向AjaxPro页面传值? 为什么后来画的线不平滑了呢??/ 如何实现控件数组? 在制作安装包时,有特殊需要,安装路径不能含有空格。如何提示? 在Excel中,我将几个单元格合并后,合并后的单元格就无法自动换行了,Why? 把资源嵌入程序的编译命令 使用继承的窗体,为什么经常会出现加载错误 如何筛选考勤原始数据中的有效数据 想提高C#水平的来!!
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets; //可以使用套接字
using System.Threading; //可以使用多线程
namespace threadtcpclient
{
/// <summary>
/// 服务器监听类,用于监听客户端连接,把建立好连接的socket传递给ClientThread类接受数据
/// </summary>
class Threadtcpserver
{
private Socket server;
public Threadtcpserver()
{
IPEndPoint iep = new IPEndPoint(IPAddress .Any ,3130);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 将套接字与本地终结点绑定
server.Bind(iep); //在本地3130端口号上进行监听
server.Listen(1000);
Console.WriteLine("等待客户机进行连接......");
while (true)
{
// 得到包含客户端信息的套接字,无接入时回阻塞在这
Socket client = server.Accept(); //创建消息服务线程对象
ClientThread newclient = new ClientThread(client); //把ClientThread 类的ClientService方法委托给线程
Thread newthread = new Thread(new ThreadStart(newclient.ClientService)); // 启动消息服务线程
newthread.Start();
}
}
static void Main(string[] args)
{
Threadtcpserver instance = new Threadtcpserver();
}
}
/// <summary>
/// 接收类,有建立了连接的socket句柄,负责接受发送数据
/// </summary>
public class ClientThread
{
public Socket service;
public static int connections = 0;//连接数
public string c_ip;//客户端的ip信息
int receive_bytes;
public ClientThread(Socket clientsocket)
{
//service对象接管对消息的控制
this.service = clientsocket;
}
public void ClientService()
{
String data = null;
byte[] bytes = new byte[1024];
if (service != null)
{
connections++;
IPEndPoint iep = service.RemoteEndPoint as IPEndPoint;
c_ip=iep.Address .ToString ()+":"+iep .Port .ToString ();
}
Console.WriteLine("与客户端[{1}]连接建立,现在连接数{0}", connections,c_ip);
try
{
while ((receive_bytes = service.Receive(bytes)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, receive_bytes);
Console.WriteLine("收到[{1}]的数据: {0}", data, c_ip); // 处理客户端发来的消息,这里是转化为大写字母
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); // 发送一条应答消息
service.Send(msg); Console.WriteLine("发送的数据: {0}", data);
}
}
catch (Exception receive_send)
{
//一般是Socket.SocketException
//Console.WriteLine(receive_send.ToString ());
Console.WriteLine("远程客户端[{0}]异常关闭连接",c_ip);
}
finally
{
//关闭套接字
service.Close();
connections--;
Console.WriteLine("与客户端[{1}]断开连接,现在有{0} 个连接数", connections, c_ip);
}
}
}
}client:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;namespace NetworkStreamClient
{
class Program
{
static void Main(string[] args)
{
try
{
TcpClient newclient = new TcpClient();
newclient.Connect("localhost",3130);//可改成ip地址
NetworkStream stm = newclient.GetStream();
byte[] sendbytes = Encoding.ASCII.GetBytes("data is coming"+" here."); ; stm.Write(sendbytes, 0, sendbytes.Length);
newclient.Close();
Console.Read(); }
catch (Exception e)
{
//输出异常信息
Console.WriteLine(e.ToString());
Console.Read();
}
finally
{ }
}
private string localIP; //本机监听端口号
private int localPort = 0; //服务器端ip地址
private string serverIP; //服务器端端口号
private int serverPort = 0;
//网络通讯对象实例
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//实例化Socket /// <summary>
/// UDP发送函数
/// </summary>
/// <param name="send_message">发送的信息体</param>
/// <returns>终端返回的UDP数据包,数据类型:字节数组,没有返回值时为空数组</returns>
public byte[] sendMessage(byte[] send_message, bool waite)
{
IPAddress selfIP = IPAddress.Parse(localIP);
IPEndPoint selfEP = new IPEndPoint(selfIP, 0); IPAddress sIP = IPAddress.Parse(serverIP);
IPEndPoint serverEP = new IPEndPoint(sIP, serverPort);
int count = 0;
serverEP = new IPEndPoint(sIP, serverPort);
EndPoint remort = (EndPoint)serverEP;
socket.SendTo(send_message, send_message.Length, SocketFlags.None, serverEP);//发送指令
if (waite == false)
{
return null;
} //socket.ReceiveTimeout = time;
byte[] result = new byte[1024];
try
{
count = socket.ReceiveFrom(result, result.Length, SocketFlags.None, ref remort);//接收指令
byte[] newResult = new byte[count];
Array.Copy(result, newResult, count);
return newResult;
}
catch
{
return null;
}
}
http://www.cnblogs.com/rainlake/archive/2005/09/06/230753.html楼主请参考