tbxMessage.Invoke(resetMessageCallBack, null); lstbxMessageView.Invoke(showMessageCallback, state.ToString()); }
catch {
if (reader != null) {
reader.Close(); }
if (writer != null) {
writer.Close(); }
if (tcpClient != null) {
tcpClient.Close(); }
statusStripInfo.Invoke(showStatusCallBack, \断开了连接\ } }
服务器端接受开始监听客户端请求的代码: // 开始监听
private void btnStart_Click(object sender, EventArgs e) {
tcpLister = new TcpListener(ipaddress,Port); tcpLister.Start();
// 启动一个线程来接受请求
Thread acceptThread =new Thread(acceptClientConnect); acceptThread.Start(); }
// 接受请求
private void acceptClientConnect() {
statusStripInfo.Invoke(showStatusCallBack,\正在监听\ Thread.Sleep(1000); try {
statusStripInfo.Invoke(showStatusCallBack,\等待连接\ tcpClient = tcpLister.AcceptTcpClient(); if (tcpLister != null) {
statusStripInfo.Invoke(showStatusCallBack,\接受到连接\ networkStream = tcpClient.GetStream();
reader = new BinaryReader(networkStream); writer = new BinaryWriter(networkStream); } }
catch {
statusStripInfo.Invoke(showStatusCallBack, \停止监听\ Thread.Sleep(1000);
statusStripInfo.Invoke(showStatusCallBack, \就绪\ } }
现在看看运行的结果:
首先先启动服务器然后点开始监听,此时线程会堵塞,直到接受到一个连接请求位置
然后运行客户端,在IP地址和端口处输入服务器端的IP地址和端口号,点击连接服务器按钮后的界面如下:
通过接受按钮和发送按钮来实现双方的通信,实现界面如下:
相关推荐: