C# Winform Socket即时通讯
使用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即时通讯相关推荐
- Socket即时通讯
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之即时通讯之Socket(AsyncSocket) 1.AsyncSocket介绍 如果需要在项目中像QQ微信一样做 ...
- Android应用socket即时通讯的实现
一.服务器 思路: 首先创建服务器,用一个死循环等候若干个客户端的连接.一旦有客户端连接,就把客户端添加到集合当中,并且启动一个新的线程来保持长连接,监控客户端发来的信息.一旦接收到有客户端发来的信息 ...
- php怎么实现即时聊天,php实现socket即时通讯示例
在socket出现之前已经有ajax定时请求.长轮询等方案,但都不能满足某些特定情况下的需求,基于此,socket就应运而生了. 总结下常用的socket函数 服务端: socket_create 创 ...
- 基于socket的可发送表情简单即时通讯
前言 这段时间做的东西比较杂,但是对学习来说还是很有帮助的,这次做的基于socket的即时通讯也是为了更加了解IM,本来是打算使用openfire或者apollo服务器来实现的,但是中途时间上的问题, ...
- winform中socket实现即时通讯(仿qq聊天)
C# winform中使用socket实现即时通讯,仿照qq聊天,此为服务器端代码,亲测可行,代码如下 using System; using System.Collections.Generic; ...
- python怎么连接socket_python socket连接实现即时通讯
最近闲暇无事,好多人问即时通讯怎么做的,尤其是对于当下大火的python更是如此,大多数人都知道一个xmpp或者xampp框架,于是开了简书,大致说明一下 不明白tcp/udp协议底层原理的,自行百度 ...
- java socket 模拟im 即时通讯
自己想了一下怎么实现,就写了,没有深究是否合理.更多处理没有写下去,例如收件人不在线,应该保存在数据库,等下一次连接的时候刷新map,再把数据发送过去,图片发送也没有做,也没有用json格式 sock ...
- winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析
即时通讯程序,腾讯QQ可以说是一家独大,虽然市场上仍然有类似QQ的即时通讯程序,但是基本上面向的对象都是特定人群.那么,现在做一个即时通讯的软件还有意义吗?在我看来,意义非常大.作为一个学习编程的人, ...
- Android即时通讯--仿QQ即时聊天:(一)初识Socket
1.即时通讯简介 即时通讯(Instant Messaging,简称IM)是一个终端服务,允许两人或者多人通过网络即时传递文字讯息.档案.语音等.简单的概括就是发送消息时,只要对方在线,就能立即接收到 ...
- java毕业设计——基于Java+SOCKET的即时通讯工具设计与实现(毕业论文+程序源码)——即时通讯工具
基于Java+SOCKET的即时通讯工具设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+SOCKET的即时通讯工具设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...
最新文章
- Bootstrap 手风琴搭配导航条实现常用菜单栏
- Velocity介绍
- 机器人学习--激光slam简单案例版学习参考(转)
- Apache配置(转载)
- 【渝粤题库】广东开放大学 建设监理 形成性考核
- PyTorch:保存/加载训练好的模型测试
- 阿里拍卖官方客服全面升级 推出一对一教你“一站式服务”
- qt 多重继承_C++多继承(多重继承)详解
- c/c++的预处理定义 Stringizing Operator (#) Charizing Operator (#@) Token-Pasting Operator (##)
- 「TJOI 2013」攻击装置
- 眼底图像血管增强与分割--(1)匹配滤波算法原理及实现
- 芯烨Xprinter XP-D3601B 打印机驱动
- 对称密钥与非对称密钥算法
- 谷歌退出中国市场传言推动百度股价大涨4.8%【转载】
- MySQL中Packet for query is too large (1327736 1048576)错误
- html超链接访问前颜色,html超链接颜色设置
- C#使用SHA256哈希算法实现简单用户注册与验证
- 0day安全:软件漏洞分析技术 学习分析记录
- dell-inspiron 14r笔记本电脑除尘总结
- 面向对象:让我们红尘作伴,吃的白白胖胖