#region Socket连接服务器
public void Receive(string ip,int port)
{
try
{
//①创建一个Socket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//②连接到指定服务器的指定端口
socket.Connect(ip, port); //localhost代表本机
Scripter.ShowMessage("client:connect to server success!");
//③实现异步接受消息的方法 客户端不断监听消息
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
//④接受用户输入,将消息发送给服务器端
while (true)
{
var message = Console.ReadLine();
var outputBuffer = Encoding.UTF8.GetBytes(message);
socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null);
}
}
catch (Exception ex)
{
Scripter.ShowMessage(ex.Message,false);
}
finally
{
//Console.Read();
}
}
#endregion
#region 接收信息
/// <summary>
/// 接收信息
/// </summary>
/// <param name="ar"></param>
public void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
//读取出来消息内容
var message = Encoding.ASCII.GetString(buffer, 0, length);
// message.tostring();
//接收下一个消息(因为这是一个递归的调用,所以这样就可以一直接收消息了)
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch (Exception ex)
{
Scripter.ShowMessage(ex.Message,false);
}
}
#endregion