有服务器端源码和客户端源码,TCPIP通信(含服务器端和客户端源码)

【实例简介】

【实例截图】

88978181d0030bbc87527244f62f967a.png

631fd25b1fc17f3c7827618b24229a40.png

【核心代码】

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.Sockets;

using System.Net;

using System.IO;

using System.Threading;

namespace today_chat

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

TcpListener Listener; // 监听

public Socket SocketClient; //

NetworkStream NetStream; // 网络流

StreamReader ServerReader; // 服务器 读

StreamWriter ServerWriter; // 服务器 写

Thread Thd; // 线程

public void BeginLister() // 打开服务器 子函数

{

while (true)

{

try

{

IPAddress[] Ips = Dns.GetHostAddresses(""); // 本机 IP地址 定义

string GetIp = Ips[0].ToString(); // 获取到IP 地址

Listener = new TcpListener(IPAddress.Parse(GetIp), 8888); // 监听

Listener.Start(); // 开始监听

CheckForIllegalCrossThreadCalls = false;

btnBeginServer.Enabled = false;// 开始服务器 按键控件使能关闭

// MessageBox.Show("服务器已经开启!", "服务器消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

this.Text = "服务器 已经开启……";

SocketClient = Listener.AcceptSocket();//接受挂起----监听到的Socket

NetStream = new NetworkStream(SocketClient); // 网络流

ServerWriter = new StreamWriter(NetStream);

ServerReader = new StreamReader(NetStream);

if (SocketClient.Connected) // 监听 ScoketClient

{

MessageBox.Show("客户端连接成功!", "服务器消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

catch

{

}// 不做处理 继续测试监听

}

}

private void GetMessage() // 获取消息

{

if (NetStream != null && NetStream.DataAvailable) // 网络流 非空 或者数据可用

{

rtxChatInfo.AppendText(DateTime.Now.ToString());

rtxChatInfo.AppendText(" 客户端说:\n");

rtxChatInfo.AppendText(ServerReader.ReadLine() "\n");

//下拉框

rtxChatInfo.SelectionStart = rtxChatInfo.Text.Length;

rtxChatInfo.Focus();

rtxSendMessage.Focus();

}

}

private void tmrGetMess_Tick(object sender, EventArgs e) // 定时器 执行函数

{

GetMessage();

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e) // 关闭 执行函数

{

DialogResult Dr = MessageBox.Show("这样会中断与客户端的连接,你要关闭该窗体吗?", "服务器信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); ;

if (DialogResult.Yes == Dr)

{

try

{

Listener.Stop();

this.Thd.Abort();

e.Cancel = false;

}

catch { }

}

else

{

e.Cancel = true;

}

}

private void btnClose_Click(object sender, EventArgs e) // 关闭 按钮 执行函数

{

try

{

this.Thd.Abort();

this.Close();//如果有线程则关闭线程

}

catch { this.Close(); }//出错 则说明没有线程 直接关闭窗体

}

private void btnSend_Click(object sender, EventArgs e) // 发送 按钮 执行函数

{

try

{

if (rtxSendMessage.Text.Trim() != "")

{

ServerWriter.WriteLine(rtxSendMessage.Text);//信息写入流

ServerWriter.Flush();

rtxChatInfo.AppendText( DateTime.Now.ToString());

rtxChatInfo.AppendText(" 服务器说:\n");//.Text = "服务器说: " rtxSendMessage.Text "\n";

rtxChatInfo.AppendText(rtxSendMessage.Text "\n");

rtxSendMessage.Clear();

//滚动条

rtxChatInfo.SelectionStart = rtxChatInfo.Text.Length;

rtxChatInfo.Focus();

rtxSendMessage.Focus();

}

else

{

MessageBox.Show("信息不能为空!", "服务器消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

rtxSendMessage.Focus();

return;

}

}

catch

{

MessageBox.Show("客户端连接失败……", "服务器消息", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

private void btnBeginServer_Click(object sender, EventArgs e) // 按键 打开服务器 执行函数

{

Thd = new Thread(new ThreadStart(BeginLister));//创建线程

Thd.Start(); //启动线程

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值