使用Winform 实现两个窗体间的对话

开启服务

客户端开始连接

进行通讯

服务端

后台代码

//服务端的窗体public partial class Form1 : Form{public Form1(){InitializeComponent();}//创建一个服务端Socket serverSocket = null;private void button1_Click(object sender, EventArgs e){serverSocket = new Socket(SocketType.Stream, ProtocolType.Tcp);//获取ip地址IPAddress ip = IPAddress.Parse(textBox1.Text);//获取端口号IPEndPoint ep = new IPEndPoint(ip, int.Parse(textBox2.Text));//捕获异常try{//获取到端口号和ipserverSocket.Bind(ep);serverSocket.Listen(0);richTextBox1.AppendText("启动成功!\r\n");//使用线程Thread th = new Thread(WatchCilent);th.Start();}catch{richTextBox1.AppendText("启动失败!\r\n");}}List<Socket> slist = new List<Socket>();//监视客户端public void WatchCilent(){//不断监视新的客户端while (true){//获取到新的客户端var myCilent = serverSocket.Accept();//将客户端存入listslist.Add(myCilent);//使用线程this.Invoke(new Action(() =>{listBox1.Items.Add(myCilent.RemoteEndPoint.ToString());richTextBox1.AppendText("客户端:(" + myCilent.RemoteEndPoint.ToString() + "):连接成功!" + "\r\n");}));Thread th = new Thread(new ParameterizedThreadStart(startClient));th.IsBackground = true;th.Start(myCilent);}}public void startClient(object myClient){var cilentSocket = myClient as Socket;while (true){//发送消息的大小var bytes = new byte[1024 * 1024];var mlength = cilentSocket.Receive(bytes);//将字节转换为字符串string msg = Encoding.UTF8.GetString(bytes, 0, mlength);//使用线程  发送消息this.Invoke(new Action(() =>{richTextBox1.AppendText("客户端:(" + DateTime.Now + "):" + msg + "\r\n");}));}}private void button2_Click(object sender, EventArgs e){//把要发送的字符串转化为字节var bytes = Encoding.UTF8.GetBytes(textBox3.Text.Trim());foreach (var item in slist){//循环发送item.Send(bytes);}richTextBox1.AppendText("服务端:(" + DateTime.Now + "):" + textBox3.Text.Trim() + "\r\n");}private void Form1_FormClosed(object sender, FormClosedEventArgs e){//关闭服务serverSocket.Close();}}

客户端

后台代码

//客户端
public partial class Form1 : Form{public Form1(){InitializeComponent();}//创建一个新的客户端Socket cilentSocket = null;private void button1_Click(object sender, EventArgs e){cilentSocket = new Socket(SocketType.Stream, ProtocolType.Tcp);//获取ipIPAddress ip = IPAddress.Parse(textBox1.Text);//获取端口号IPEndPoint ep = new IPEndPoint(ip, int.Parse(textBox2.Text));try{//建立连接cilentSocket.Connect(ep);richTextBox1.AppendText("连接成功!\r\n");Thread th = new Thread(StartMsg);th.IsBackground = true;th.Start();}catch{richTextBox1.AppendText("连接失败!\r\n");}}public void StartMsg(){while (true){//发送消息的大小var bytes = new byte[1024 * 1024];var mlength = cilentSocket.Receive(bytes);//将字节转换为字符串string msg = Encoding.UTF8.GetString(bytes, 0, mlength);this.Invoke(new Action(() =>{richTextBox1.AppendText("服务端:(" + DateTime.Now + "):" + msg + "\r\n");}));}}private void button2_Click(object sender, EventArgs e){//把要发送的字符串转化为字节var bytes = Encoding.UTF8.GetBytes(textBox3.Text.Trim());cilentSocket.Send(bytes);richTextBox1.AppendText("客户端:(" + DateTime.Now + "):" + textBox3.Text.Trim() + "\r\n");}private void Form1_FormClosed(object sender, FormClosedEventArgs e){//关闭服务cilentSocket.Close();}}

C# Winform Socket即时通讯相关推荐

  1. Socket即时通讯

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之即时通讯之Socket(AsyncSocket) 1.AsyncSocket介绍 如果需要在项目中像QQ微信一样做 ...

  2. Android应用socket即时通讯的实现

    一.服务器 思路: 首先创建服务器,用一个死循环等候若干个客户端的连接.一旦有客户端连接,就把客户端添加到集合当中,并且启动一个新的线程来保持长连接,监控客户端发来的信息.一旦接收到有客户端发来的信息 ...

  3. php怎么实现即时聊天,php实现socket即时通讯示例

    在socket出现之前已经有ajax定时请求.长轮询等方案,但都不能满足某些特定情况下的需求,基于此,socket就应运而生了. 总结下常用的socket函数 服务端: socket_create 创 ...

  4. 基于socket的可发送表情简单即时通讯

    前言 这段时间做的东西比较杂,但是对学习来说还是很有帮助的,这次做的基于socket的即时通讯也是为了更加了解IM,本来是打算使用openfire或者apollo服务器来实现的,但是中途时间上的问题, ...

  5. winform中socket实现即时通讯(仿qq聊天)

    C# winform中使用socket实现即时通讯,仿照qq聊天,此为服务器端代码,亲测可行,代码如下 using System; using System.Collections.Generic; ...

  6. python怎么连接socket_python socket连接实现即时通讯

    最近闲暇无事,好多人问即时通讯怎么做的,尤其是对于当下大火的python更是如此,大多数人都知道一个xmpp或者xampp框架,于是开了简书,大致说明一下 不明白tcp/udp协议底层原理的,自行百度 ...

  7. java socket 模拟im 即时通讯

    自己想了一下怎么实现,就写了,没有深究是否合理.更多处理没有写下去,例如收件人不在线,应该保存在数据库,等下一次连接的时候刷新map,再把数据发送过去,图片发送也没有做,也没有用json格式 sock ...

  8. winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析

    即时通讯程序,腾讯QQ可以说是一家独大,虽然市场上仍然有类似QQ的即时通讯程序,但是基本上面向的对象都是特定人群.那么,现在做一个即时通讯的软件还有意义吗?在我看来,意义非常大.作为一个学习编程的人, ...

  9. Android即时通讯--仿QQ即时聊天:(一)初识Socket

    1.即时通讯简介 即时通讯(Instant Messaging,简称IM)是一个终端服务,允许两人或者多人通过网络即时传递文字讯息.档案.语音等.简单的概括就是发送消息时,只要对方在线,就能立即接收到 ...

  10. java毕业设计——基于Java+SOCKET的即时通讯工具设计与实现(毕业论文+程序源码)——即时通讯工具

    基于Java+SOCKET的即时通讯工具设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+SOCKET的即时通讯工具设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

最新文章

  1. Bootstrap 手风琴搭配导航条实现常用菜单栏
  2. Velocity介绍
  3. 机器人学习--激光slam简单案例版学习参考(转)
  4. Apache配置(转载)
  5. 【渝粤题库】广东开放大学 建设监理 形成性考核
  6. PyTorch:保存/加载训练好的模型测试
  7. 阿里拍卖官方客服全面升级 推出一对一教你“一站式服务”
  8. qt 多重继承_C++多继承(多重继承)详解
  9. c/c++的预处理定义 Stringizing Operator (#) Charizing Operator (#@) Token-Pasting Operator (##)
  10. 「TJOI 2013」攻击装置
  11. 眼底图像血管增强与分割--(1)匹配滤波算法原理及实现
  12. 芯烨Xprinter XP-D3601B 打印机驱动
  13. 对称密钥与非对称密钥算法
  14. 谷歌退出中国市场传言推动百度股价大涨4.8%【转载】
  15. MySQL中Packet for query is too large (1327736 1048576)错误
  16. html超链接访问前颜色,html超链接颜色设置
  17. C#使用SHA256哈希算法实现简单用户注册与验证
  18. 0day安全:软件漏洞分析技术 学习分析记录
  19. dell-inspiron 14r笔记本电脑除尘总结
  20. 面向对象:让我们红尘作伴,吃的白白胖胖

热门文章

  1. 电子宠物游戏(附C++源码)
  2. HDU 5956 The Elder(树型DP+斜率优化)
  3. 电脑代理上网和共享上网
  4. 如何通过web of science查询一个学者每一年的h-index?(h指数)
  5. GIS空间分析(二)—— 空间分析的历史与发展
  6. UWB通信中TOF技术详解
  7. 【转】SAP 各种记账凭证的更改冲销
  8. android 监听本机网络请求_前端系列课程(2)-网络基础概念(URL)
  9. ubuntu snap 安装的nextcloud 忘记管理员密码,重新设置密码。
  10. Mac修改文件名的颜色