C# Socket编程 服务端与客户端(二)
来源:互联网 发布:淘宝恒源祥是正品吗 编辑:程序博客网 时间:2024/05/29 09:17
在(一)中已经有了客户端,这里就不再介绍,这一篇中我们在服务端中加上多线程,结果会与(一)中有很大的不同,仔细比较,体会。与(一)不同的是每接收到一个socket连接,服务端就将处理的操作抛到一个新的线程里去执行,这样就不会产生(一)中的排队现象。
本篇客户端结果:
本篇服务端结果:
改变后的服务端代码:
static void Main(string[] args) { Socket m_svrSock = null; IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 3800); m_svrSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); m_svrSock.Bind(endPoint); m_svrSock.Listen(100); Console.WriteLine("Listen Up..."); while (true) { Socket client; client = m_svrSock.Accept(); if (!client.Poll(-1, SelectMode.SelectRead)) { continue; } new Thread(new ParameterizedThreadStart(serverThread)).Start(client); } } volatile static int customerCount = 1; [ThreadStatic] private static string threadId; static void serverThread(object client) { threadId = Thread.CurrentThread.GetHashCode() + ""; Socket clientSocket = (Socket)client; Console.WriteLine(threadId + "Customer:" + customerCount); customerCount++; int lineCount = 0; byte[] receive = new byte[7]; while (true) { Thread.Sleep(500); Console.WriteLine(threadId + "line:" + lineCount); if (!clientSocket.Poll(-1, SelectMode.SelectRead)) { lineCount++; continue; } if (clientSocket.Receive(receive, 7, SocketFlags.None) == 0) { Console.WriteLine(threadId + "no data here!The customer has closed his client!"); break; } Console.WriteLine(threadId + "socket here..."); string lengthStr = Encoding.UTF8.GetString(receive, 4, 3); int length = int.Parse(lengthStr); byte[] receiveBody = new byte[length]; clientSocket.Receive(receiveBody, length, SocketFlags.None); Console.WriteLine(threadId + "line:" + lineCount + Encoding.UTF8.GetString(receiveBody)); lineCount++; } }
0 0
- C# Socket编程 服务端与客户端(二)
- C# Socket编程 服务端与客户端(一)
- C# Socket编程 服务端与客户端(四) 异步服务端
- C# socket编程 异步服务端 同步客户端
- socket 编程之TCP服务端与客户端
- Socket客户端与服务端
- socket实现客户端与服务端通信(二)客户端
- C# Socket TCP 编程,客户端与服务端连接,发送字符串,文件
- C# Socket TCP 编程,客户端与服务端连接,发送字符串,文件
- C# socket编程 异步服务端 同步客户端(转)
- socket编程(二)通过服务端实现客户端之间通信
- c# Socket 异步客户端服务端
- Socket编程_tcp客户端服务端
- C# socket 服务端与客户端通信演示代码
- C# socket 服务端与客户端通信演示代码
- C# 服务端与客户端示例(Socket通信)
- Java Socket客户端与C#服务端的通信
- C#服务端与客户端
- 交通标志的检测与识别(一)
- Python语言学习讲解二:@staticmethod和@classmethod的作用与区别
- android中string.xml中%1$s、%1$d等的用法
- 浅谈JavaScript 函数作用域当中的“提升”现象
- TreeSet 练习
- C# Socket编程 服务端与客户端(二)
- mac java环境变量配置 maven配置
- 图片圆角处理封装
- UART和RS232/RS485的关系是什么?
- 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议
- 集群
- 欢迎使用CSDN-markdown编辑器
- 编译android4.4源代码出现的问题及解决
- Java中char占用几个字节