【实例简介】
C# socket通讯实例,客户端和服务端怎么使用
【实例截图】
【核心代码】
服务端:
Socket socketSend;
private void
Start_View_Click(object sender, RoutedEventArgs e)
{
try
{
//点击开始监听时 在服务端创建一个负责监听IP和端口号的Socket
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Any;//创建对象端口
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(Port.Text));
socketWatch.Bind(point);//绑定端口号
ShowMsg("监听成功!");
socketWatch.Listen(10);//设置监听
//创建监听线程
Thread thread = new Thread(Listen);
thread.IsBackground = true;
thread.Start(socketWatch);
}
catch (Exception ex)
{
ShowMsg(ex.Message);
}
}
void Listen(object o)
{
try
{
Socket socketWatch = o as Socket;
while (true)
{
socketSend =
socketWatch.Accept();//等待接收客户端连接
ShowMsg(socketSend.RemoteEndPoint.ToString() ":" "连接成功!");
//开启一个新线程,执行接收消息方法
Thread r_thread = new Thread(Received);
r_thread.IsBackground = true;
r_thread.Start(socketSend);
}
}
catch (Exception e)
{
ShowMsg(e.Message);
}
}
客户端
Socket socketSend;
private void
Start_View_Click(object sender, RoutedEventArgs e)
{
try
{
//创建客户端Socket,获得远程ip和端口号
socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(IP.Text);
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(Port.Text));
socketSend.Connect(point);
socketSend.ReceiveTimeout =
60*1000;//接收超时时间
ShowMsg("连接成功!");
//开启新的线程,不停的接收服务器发来的消息
Thread c_thread = new Thread(Received);
c_thread.IsBackground = true;
c_thread.Start();
}
catch (Exception)
{
ShowMsg("IP或者端口号错误...");
}
}