110,536
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
namespace HurysLEDConvenSoft
{
class Program
{
static byte[] buffer = new byte[1024];
static void Main(string[] args)
{
SocketClient();
}
public static void SocketClient()
{
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
//连接到指定服务器的指定端口
socket.Connect("192.168.0.101", 4001);
bool connected = socket.Connected;
if (connected == true)
{
Console.WriteLine("connect to the server");
//实现接受消息的方法
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
//开始发送指令 获取平台四通数据
//1.登录请求
//while (true)
//{
var message = "Message from client : " + Console.ReadLine();
var outputBuffer = Encoding.Default.GetBytes(message);
socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null);
// }
//2.获取VMS信息
//3.获取指定VMS合成后的新的显示页信息
//4.发送数据到LED
}
}
catch (Exception)
{
Console.WriteLine("SocketClient...");
SocketClient();
}
}
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
//读取出来消息内容
var message = Encoding.Default.GetString(buffer, 0, length);
//显示消息
Console.WriteLine(message);
//递归接收
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
这段代码模拟DOC窗输入 然后服务器返回相应信息 我现在的需求是需要判断以后往下执行的,但是我不知道是应该在SocketClient函数中判断还是在异步返回中判断.
比如,我输入1,如果服务器返回2,那么我继续发送第2个指令,如果返回数据等于3,那么我再接着发送第3个指令,这个过程如果在SocketClient判断 ,那么我怎么获取异步返回的数据拿来判断呢???