110,567
社区成员
发帖
与我相关
我的任务
分享
static void Main(string[] args)
{
//创建一个Socket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{ //连接到指定服务器的指定端口
socket.Connect("192.168.2.80", 40012);
Console.WriteLine("{0}:{1}:Conneted...." + "\r\n", "192.168.2.80", 40012);
//实现接受消息的方法
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 异步接收
/// </summary>
/// <param name="ar"></param>
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
socket.ReceiveTimeout = 40000;
var length = socket.EndReceive(ar);
byte[] reallData = new byte[length];
Array.Copy(buffer, reallData, reallData.Length);
string data = BitConverter.ToString(reallData);
Console.WriteLine(data);
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public class StateObject
{
public TcpClient Client = null;
public byte[] buffer = new byte[1024];
public MemoryStream mb = new MemoryStream();
public const int BufferSize = 1024;
}
class Program
{
static byte[] buffer = new byte[2048];
static void Main(string[] args)
{
//创建一个Socket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{ //连接到指定服务器的指定端口
socket.Connect("192.168.0.80", 4001);
Console.WriteLine("{0}:{1}:Conneted...." + "\r\n", "192.168.0.80", 4001);
//实现接受消息的方法
StateObject o = new StateObject();
o.Client = socket;
socket.BeginReceive(o.buffer, 0, o.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), o);
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 异步接收数据
/// </summary>
/// <param name="ar"></param>
public static void ReceiveMessage(IAsyncResult ar)
{
TcpClient client = null;
StateObject state = (StateObject)ar.AsyncState;
// 从输入参数异步state对象中获取state和socket对象
client = state.Client;
//从远程设备读取数据
int bytesRead = client.Client.EndReceive(ar);
if (bytesRead > 0)
{
// 有数据,存储.
state.mb.Write(state.buffer, 0, state.buffer.Length);
// 继续读取.
if (client.Client.Available > 0)
{
client.Client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveMessage), state);
}
else
{
//接收完成,做处理
}
}
}
[/quote]
其实意思到了,你改下就行了。不管是TcpClient还是Socket,都一样,类型不对,你改下不好了,思路是这样的。我只能帮你到这里了
public class StateObject
{
public TcpClient Client = null;
public byte[] buffer = new byte[1024];
public MemoryStream mb = new MemoryStream();
public const int BufferSize = 1024;
}
class Program
{
static byte[] buffer = new byte[2048];
static void Main(string[] args)
{
//创建一个Socket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{ //连接到指定服务器的指定端口
socket.Connect("192.168.0.80", 4001);
Console.WriteLine("{0}:{1}:Conneted...." + "\r\n", "192.168.0.80", 4001);
//实现接受消息的方法
StateObject o = new StateObject();
o.Client = socket;
socket.BeginReceive(o.buffer, 0, o.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), o);
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 异步接收数据
/// </summary>
/// <param name="ar"></param>
public static void ReceiveMessage(IAsyncResult ar)
{
TcpClient client = null;
StateObject state = (StateObject)ar.AsyncState;
// 从输入参数异步state对象中获取state和socket对象
client = state.Client;
//从远程设备读取数据
int bytesRead = client.Client.EndReceive(ar);
if (bytesRead > 0)
{
// 有数据,存储.
state.mb.Write(state.buffer, 0, state.buffer.Length);
// 继续读取.
if (client.Client.Available > 0)
{
client.Client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveMessage), state);
}
else
{
//接收完成,做处理
}
}
}
public class StateObject
{
public TcpClient Client = null;
public byte[] buffer = new byte[1024];
public MemoryStream mb = new MemoryStream();
}
开始 的时候:
static void Main(string[] args)
{
//创建一个Socket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{ //连接到指定服务器的指定端口
socket.Connect("192.168.2.80", 40012);
Console.WriteLine("{0}:{1}:Conneted...." + "\r\n", "192.168.2.80", 40012);
//实现接受消息的方法
StateObject o=bew StateObject();
o.Client=socket;
socket.BeginReceive(o.buffer , 0,o.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), o);
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
接收到数据的时候:
TcpClient client=null;
StateObject state = (StateObject)ar.AsyncState;
// 从输入参数异步state对象中获取state和socket对象
client = state.Client;
//从远程设备读取数据
int bytesRead = client.Client.EndReceive(ar);
if (bytesRead > 0)
{
// 有数据,存储.
state.mb.Write(state.buffer,0, state.buffer.Length);
// 继续读取.
if (client.Client.Available > 0)
{
client.Client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
}
else
{//接收完成,做处理}
大概是这么个意思