TCP实现多个客户端与服务端 数据 传输
来源:互联网 发布:工业三维建模软件 编辑:程序博客网 时间:2024/05/22 01:51
实现一个客户端和一个服务端通信
可以同时收发多条信息
使用C#语言,通过socket进行通信,基于TCP协议
服务端代码:
<code class="hljs cs has-numbering"><span class="hljs-keyword">using</span> System;<span class="hljs-keyword">using</span> System.Collections.Generic;<span class="hljs-keyword">using</span> System.Linq;<span class="hljs-keyword">using</span> System.Text;<span class="hljs-keyword">using</span> System.Threading.Tasks;<span class="hljs-keyword">using</span> System.Net;<span class="hljs-keyword">using</span> System.Net.Sockets;<span class="hljs-keyword">using</span> System.Threading;namespace testServer{ class Program { <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> Main(<span class="hljs-keyword">string</span>[] args) { Socket server = <span class="hljs-keyword">new</span> Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);<span class="hljs-comment">//创建服务端</span> EndPoint point = <span class="hljs-keyword">new</span> IPEndPoint(IPAddress.Parse(<span class="hljs-string">"169.254.202.67"</span>), <span class="hljs-number">6000</span>); server.Bind(point);<span class="hljs-comment">//绑定端口号和IP</span> server.Listen(<span class="hljs-number">10</span>);<span class="hljs-comment">//开启监听</span> Console.WriteLine(<span class="hljs-string">"服务器开启。。。。"</span>); Socket client = server.Accept();<span class="hljs-comment">//保存连接进来的客户端</span> client.Send(Encoding.UTF8.GetBytes(<span class="hljs-string">"你已经进入服务"</span>));<span class="hljs-comment">//给客户端发送消息,提示客户端连接成功</span> Thread t1 = <span class="hljs-keyword">new</span> Thread(reciveMsg); t1.Start(client);<span class="hljs-comment">//开启线程接收消息</span> Thread t2 = <span class="hljs-keyword">new</span> Thread(sendMsg); t2.Start(client);<span class="hljs-comment">//开启线程发送消息</span> } <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> reciveMsg(<span class="hljs-keyword">object</span> obj) { Socket client = obj <span class="hljs-keyword">as</span> Socket; <span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) { <span class="hljs-keyword">byte</span>[] buffer = <span class="hljs-keyword">new</span> <span class="hljs-keyword">byte</span>[<span class="hljs-number">1024</span>]; <span class="hljs-keyword">try</span> { <span class="hljs-keyword">int</span> length = client.Receive(buffer); <span class="hljs-keyword">string</span> res = Encoding.UTF8.GetString(buffer, <span class="hljs-number">0</span>, length); Console.WriteLine(<span class="hljs-string">"接收到的消息:"</span> + res); } <span class="hljs-keyword">catch</span> (Exception e) { IPEndPoint point = client.RemoteEndPoint <span class="hljs-keyword">as</span> IPEndPoint; Console.WriteLine(point.ToString()+<span class="hljs-string">"断开连接。。。"</span>); <span class="hljs-keyword">break</span>; } } } <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> sendMsg(<span class="hljs-keyword">object</span> obj) { Socket client = obj <span class="hljs-keyword">as</span> Socket; <span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) { <span class="hljs-keyword">string</span> s = Console.ReadLine(); client.Send(Encoding.UTF8.GetBytes(s)); } } }}</code>
服务端代码
<code class="hljs vala has-numbering"><span class="hljs-keyword">using</span> System;<span class="hljs-keyword">using</span> System.Collections.Generic;<span class="hljs-keyword">using</span> System.Linq;<span class="hljs-keyword">using</span> System.Text;<span class="hljs-keyword">using</span> System.Threading.Tasks;<span class="hljs-keyword">using</span> System.Net;<span class="hljs-keyword">using</span> System.Net.Sockets;<span class="hljs-keyword">using</span> System.Threading;<span class="hljs-class"><span class="hljs-keyword">namespace</span> <span class="hljs-title">testClient</span>{</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Program</span> {</span> <span class="hljs-keyword">static</span> Socket client; <span class="hljs-keyword">static</span> Thread t1; <span class="hljs-keyword">static</span> Thread t2; <span class="hljs-keyword">static</span> <span class="hljs-keyword">bool</span> isLife = <span class="hljs-literal">false</span>;<span class="hljs-comment">//标记是否连接到服务器</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> Main(<span class="hljs-keyword">string</span>[] args) { client = <span class="hljs-keyword">new</span> Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);<span class="hljs-comment">//创建客户端</span> client.Connect(<span class="hljs-keyword">new</span> IPEndPoint(IPAddress.Parse(<span class="hljs-string">"169.254.202.67"</span>), <span class="hljs-number">6000</span>));<span class="hljs-comment">//将客户端连接到服务器</span> isLife = <span class="hljs-literal">true</span>; t1 = <span class="hljs-keyword">new</span> Thread(reciveMsg); t1.Start();<span class="hljs-comment">//开启线程接收消息</span> t2 = <span class="hljs-keyword">new</span> Thread(sendMsg); t2.Start();<span class="hljs-comment">//开启线程发送消息</span> <span class="hljs-comment">//Console.ReadKey();</span> } <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> reciveMsg() { <span class="hljs-keyword">while</span> (isLife) { byte[] buffer = <span class="hljs-keyword">new</span> byte[<span class="hljs-number">1024</span>]; <span class="hljs-keyword">try</span>{ <span class="hljs-keyword">int</span> length = client.Receive(buffer); <span class="hljs-keyword">string</span> res = Encoding.UTF8.GetString(buffer, <span class="hljs-number">0</span>, length); Console.WriteLine(<span class="hljs-string">"接收到的消息:"</span> + res); }<span class="hljs-keyword">catch</span>(Exception e){ Console.WriteLine(<span class="hljs-string">"reciveMsg: End"</span>); <span class="hljs-keyword">break</span>; } } } <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> sendMsg() { <span class="hljs-keyword">while</span> (isLife) { <span class="hljs-keyword">string</span> s = Console.ReadLine(); <span class="hljs-keyword">try</span> { client.Send(Encoding.UTF8.GetBytes(s)); }<span class="hljs-keyword">catch</span> (Exception e){ Console.WriteLine(<span class="hljs-string">"sendMsg: End"</span>); <span class="hljs-keyword">break</span>; } if(s.Equals(<span class="hljs-string">"886"</span>)){ isLife = <span class="hljs-literal">false</span>; client.Close(); } } } }}</code>
效果图:
资源下载:
http://download.csdn.net/detail/u011484013/9487030
0 0
- C# TCP实现多个客户端与服务端 数据 传输
- TCP实现多个客户端与服务端 数据 传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- C#中TCP实现多个客户端与服务端数据与文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- 实现客户端与服务端之间传输json数据
- TCP服务器和多个客户端传输数据
- TCP 服务端/客户端 传输数据结构
- TCP中的服务端与客户端的实现
- TCP服务端与客户端
- 模拟客户端与服务端大数据二进制压缩传输
- java--实现多个客户端与服务端连接
- 模拟TCP传输的客户端和服务端
- 模拟TCP传输的客户端和服务端
- TCP实现ECHO程序(服务端同时处理多个客户端的响应)
- WinSock客户端服务端实现--TCP
- bootrap模态框插件
- jQuery Deferred对象
- 用const修饰函数的参数
- warning: ISO C90 forbids mixed declarations and code
- 如何防止运营商网络劫持,避免被他人强行插入广告?
- TCP实现多个客户端与服务端 数据 传输
- 开局首季问大势(2016.5.9)
- 1.1 背景相关与系统架构
- Document classification by inversion of distributed language representations
- hdu 1598(最小生成树变形)
- ListView之ContextMenu无法弹出
- Asianux 3 linux系统下GitLab客户端安装
- unity 基于socket的多人群聊实现
- 数据库的百花争艳