using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 服务器端
{
public partial class Form1 : Form
{
//字段声明
TcpListener tcpListener;//TCP监听
NetworkStream ns;//网络数据流
Thread listenThread;//监听线程
TcpClient tcpClient;//TCP客户
//回调
private delegate void ShowMsgCallBack(string msg);
ShowMsgCallBack showMsgCallBack;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
showMsgCallBack = new ShowMsgCallBack(ShowMsg);
}
private void btnlisten_Click(object sender, EventArgs e)
{
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), Convert.ToInt32(txtPort.Text));
try
{
tcpListener = new TcpListener(ipEndPoint);
tcpListener.Start();
listenThread = new Thread(listen);
listenThread.IsBackground = true;
listenThread.Start();
//修改按钮状态
btnlisten.Enabled = false;
btnbreak.Enabled = true;
btnSend.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void listen()
{
try
{
tcpClient=tcpListener.AcceptTcpClient();
ns=tcpClient.GetStream();
while(true)
{
int reader=tcpClient.Available;
if(reader>0)
{
byte []getDate=new byte[reader];
ns.Read(getDate,0,getDate.Length);
string msg=Encoding.Default.GetString(getDate);
lstMsg.Invoke(showMsgCallBack,msg);
}
}
}
catch (ThreadAbortException e)
{
//人为断开线程不用管
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void ShowMsg(string msg)
{
lstMsg.Items.Add(msg);
}
private void btnbreak_Click(object sender, EventArgs e)
{
tcpListener.Stop();
listenThread.Abort();
ns.Dispose();
//修改控件状态
btnbreak.Enabled = false;
btnlisten.Enabled = true;
btnSend.Enabled = false;
}
private void btnSend_Click(object sender, EventArgs e)
{
byte [] sendData = Encoding.Default.GetBytes(txtMsg.Text);
ns.Write(sendData, 0, sendData.Length);
}
}
}
C# 服务端
最新推荐文章于 2023-10-02 00:49:44 发布