110,545
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace SocketTest
{
public partial class Form1 : Form
{
private IPAddress ServerIP;
private IPEndPoint _ipendPoint;
Socket _mySocket;
Socket listen;
Thread listenTH;
Thread thread;
public Form1()
{
InitializeComponent();
}
private void btnStartService_Click(object sender, EventArgs e)
{
//创建socket
ServerIP = IPAddress.Parse(txtServerIP.Text.Trim());
_ipendPoint = new IPEndPoint(ServerIP, int.Parse(txtServerPort.Text.Trim()));
_mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_mySocket.Bind(_ipendPoint);
_mySocket.Listen(102400);
lbServerStateTXT.Text = "Server is started...";
listenTH = new Thread(new ThreadStart(LintenClient));
listenTH.IsBackground = true;
listenTH.Start();
//timer1.Start();
}
private void LintenClient()
{
listen = _mySocket.Accept();
thread = new Thread(new ThreadStart(threadproc));
thread.IsBackground = true;
thread.Start();
}
private void threadproc()
{
byte[] receiveMSG = new byte[10240];
listen.Receive(receiveMSG);
ASCIIEncoding ec = new ASCIIEncoding();
if (ec.GetString(receiveMSG) != "")
{
TXT(ec.GetString(receiveMSG));
}
}
private void btnStopService_Click(object sender, EventArgs e)
{
_mySocket.Close();
lbServerStateTXT.Text = "Server is stop service!";
}
private delegate void ADDMSG(String str);
public void TXT(string str)
{
if (this.InvokeRequired)
{
ADDMSG call = delegate(string s)
{
txtRecive.Text += str;
};
this.Invoke(call, str);
}
else
{
txtRecive.Text += str;
}
string strsend = "Server had recived MSG!";
byte[] bufferSend = new byte[1021];
bufferSend = System.Text.Encoding.Default.GetBytes(strsend);
listen.Send(bufferSend);
listenTH.Abort();
listen.Close();
thread.Abort();
//_mySocket.Close();
}
private void btnSend_Click(object sender, EventArgs e)
{
//发送数据
byte[] sendmsg = new byte[102300];
byte[] receivemsg = new byte[102300];
Socket mysender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
if (txtBoxSendServerPort.Text.Trim()!="")
{
mysender.Connect(txtBoxSendServerIP.Text, int.Parse(txtBoxSendServerPort.Text.Trim()));
}
else
{
mysender.Connect("127.0.0.1", 8888);
}
}
catch (Exception e2)
{
txtRecive.AppendText(e2.Message);
}
sendmsg = Encoding.Default.GetBytes(txtSend.Text);
try
{
mysender.Send(sendmsg);
}
catch (Exception e2)
{
txtRecive.AppendText(e2.Message);
}
try
{
mysender.Close();
}
catch (Exception e2)
{
txtRecive.AppendText(e2.Message);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//listenTH.Abort();
}
}
}