其实这些东西网上都有,但是比较凌乱,很少有封装好的类,在此共享一下。。。
一个Socket服务器类,一个Socket客户端类,都可以直接拿去用,下边有详细的调用示例。
需要说明的是,服务器类没有处理多客户连接,只是简单的响应单客户连接。
另外,提醒一点,尤其是很多新手容易犯的错误,就是服务器类处理事务是在线程中进行的,此时不能访问界面上的控件,需要委托跨线程访问。
Socket服务器类(SocketServicesHelper.cs):
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace USBControl
{
/// <summary>
/// Socket服务器类
/// </summary>
public class SocketServicesHelper
{
private Socket socket1 = null;
private Socket socket2 = null;
private Thread ListenThread = null;
private int port = 0; //监听端口
/// <summary>
/// 构造方法
/// </summary>
/// <param name="port">监听端口</param>
public SocketServicesHelper(int port)
{
this.port = port;
}
/// <summary>
/// 启动服务
/// </summary>
public void startServices()
{
try
{
//获取本机IP
IPAddress ip = IPAddress.Parse(getIP());
//步骤1 创建网络端点IPEndPoint
IPEndPoint myServer = new IPEndPoint(ip, port);
//步骤2 创建套接字Socket
socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//步骤3 套接字绑定到网络端点