17,741
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.ComponentModel;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace SocketServer
{
public partial class Form1 : Form
{
static string data;
static string data1;
private static byte[] result = new byte[1024];
private static int myProt = 3000; //端口
private static int myProt1 = 4000; //端口
static Socket serverSocket;
public string message;
public static string receive;
object locker = new object();
object locker1 = new object();
public static int count = 1;
//static Form2 fr1 = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
BackgroundWorker worker1 = new BackgroundWorker();
worker1.DoWork += Worker1_DoWork;
worker1.RunWorkerAsync(locker1);
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += Worker_DoWork;
worker.RunWorkerAsync(locker);
}
private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
//服务器IP地址
IPAddress ip = IPAddress.Any;
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口
serverSocket.Listen(100); //设定最多100个排队连接请求
Console.WriteLine("启动监听{0}成功" + serverSocket.LocalEndPoint.ToString());//???
//while (true)
//{
Socket myclientSocket = serverSocket.Accept();
Thread thread = new Thread(ListenClientConnect);
thread.IsBackground = true;
thread.Start(myclientSocket);
}
catch { }
}
void ListenClientConnect(object i)
{
try
{
Socket myClientSocket = i as Socket;
while (true)
{
Thread thread = new Thread(Receive);
thread.IsBackground = true;
thread.Start(myClientSocket);
data = "111";
if (data != null)
{
myClientSocket.Send(Encoding.UTF8.GetBytes(data));
Console.WriteLine("发送数据为:" + data);
receive = null;
data = null;
}
}
}
catch (Exception ex)
{
}
}
private void Receive(object i)
{
Socket clientSocket = i as Socket;
//byte[] //图像数据
//通过clientSocket接收数据
int receiveNumber = clientSocket.Receive(result);
receive = Encoding.UTF8.GetString(result, 0, receiveNumber);
Console.WriteLine("接收客户端{0}消息{1}" + clientSocket.RemoteEndPoint.ToString() + Encoding.UTF8.GetString(result, 0, receiveNumber));
}
//-----------------------------------------------------------------------------------------------
private void Worker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
//服务器IP地址
IPAddress ip = IPAddress.Any;
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ip, myProt1)); //绑定IP地址:端口
serverSocket.Listen(100); //设定最多100个排队连接请求
Console.WriteLine("启动监听{0}成功" + serverSocket.LocalEndPoint.ToString());//???
//while (true)
//{
Thread thread = new Thread(ListenClientConnect1);
thread.IsBackground = true;
thread.Start(serverSocket);
//}
}
catch { }
}
void ListenClientConnect1(object o)
{
try
{
Socket myClientSocket1 = o as Socket;
while (true)
{
Socket clientSocket1 = myClientSocket1.Accept();
Thread thread = new Thread(Receive1);
thread.IsBackground = true;
thread.Start(clientSocket1);
//if (data != null)
//{
data1 = "123";
clientSocket1.Send(Encoding.UTF8.GetBytes(data1));
Console.WriteLine("发送数据为:" + data1);
//}
}
}
catch (Exception ex)
{
}
}
private void Receive1(object o)
{
Socket clientSocket1 = o as Socket;
receive = null;
//byte[] //图像数据
//通过clientSocket接收数据
int receiveNumber = clientSocket1.Receive(result);
receive = Encoding.UTF8.GetString(result, 0, receiveNumber);
Console.WriteLine("接收客户端{0}消息{1}" + clientSocket1.RemoteEndPoint.ToString() + Encoding.UTF8.GetString(result, 0, receiveNumber));
}
}
}