(1)服务器
using System.Net.Sockets;
using System.Threading;
using System.Net;private Socket socketwatch;
private Thread serverThread;// 启动服务线程
private Thread listenThread;
private Thread thread;
serverThread = new Thread(new ThreadStart(Listen1));
serverThread.Start();
private void Listen1()
{
try
{
Int32 port = Int32.Parse("端口号");//需要监听的端口
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1];//获取本机IP
socketwatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint point = new IPEndPoint(ipAddress, port);
socketwatch.Bind(point);
socketwatch.Listen(10); //允许连接的数量
listenThread = new Thread(ListenForClients);
listenThread.IsBackground = true;
listenThread.Start();
// 开始侦听
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "Server提示");
}
}
private void ListenForClients()
{
Socket connction = null;
// 返回可以用以处理连接的Socket实例
while (true)
{
connction = socketwatch.Accept();
// 如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
if (connction.Connected)
{
IPAddress clientIP = (connction.RemoteEndPoint as IPEndPoint).Address;
int clientPort = (connction.RemoteEndPoint as IPEndPoint).Port;
string RemoteEndPoint = connction.RemoteEndPoint.ToString();
IPEndPoint netpoint = connction.RemoteEndPoint as IPEndPoint;
ParameterizedThreadStart pts = new ParameterizedThreadStart(RecvData);
thread = new Thread(pts);
thread.IsBackground = true;
thread.Start(connction);
}
}
}
private void RecvData(object client)
{
Socket socketserver = client as Socket;
byte[] message = new byte[1024 * 1024];
bool what = true;
while (what)
{
try
{
int length = socketserver.Receive(message);
if (length > 0)
{
strSRecMsg = Encoding.UTF8.GetString(message, 0, length);
this.Invoke(new weituo(see));
}
else
{
what = false;
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "Server提示");
break;
}
}
}
private delegate void weituo();//建立委托
private string strSRecMsg;//储存消息
private void see()//处理消息
{
}
(2)客户端
Socket socketclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1];//需要连接的IP
Int32 port = Int32.Parse(“端口号”);//需要连接的端口
IPEndPoint point = new IPEndPoint(ipAddress, port);
socketclient.Connect(point);
byte[] arrClientSendMsg = Encoding.UTF8.GetBytes(xml.stringtoxml(open));
socketclient.Send(arrClientSendMsg);