C# Socket通信实例
来源:互联网 发布:数据错误循环冗余检查 编辑:程序博客网 时间:2024/06/10 07:15
代码是抄来了,找不到出处了,经测试代码简洁可用
服务端代码:
using System;using System.Text;using System.Net.Sockets;using System.Net;using System.Threading;namespace SocketServer{ internal class Program { private static readonly byte[] Result = new byte[1024]; private const int MyProt = 8885; //端口 private static Socket _serverSocket; private static void Main() { //服务器IP地址 var ip = IPAddress.Parse("127.0.0.1"); _serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _serverSocket.Bind(new IPEndPoint(ip, MyProt)); //绑定IP地址:端口 _serverSocket.Listen(10); //设定最多10个排队连接请求 Console.WriteLine("启动监听{0}成功", _serverSocket.LocalEndPoint); //通过Clientsoket发送数据 var myThread = new Thread(ListenClientConnect); myThread.Start(); Console.ReadLine(); } /// <summary> /// 监听客户端连接 /// </summary> private static void ListenClientConnect() { while (true) { var clientSocket = _serverSocket.Accept(); clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello")); var receiveThread = new Thread(ReceiveMessage); receiveThread.Start(clientSocket); } } /// <summary> /// 接收消息 /// </summary> /// <param name="clientSocket"></param> private static void ReceiveMessage(object clientSocket) { var myClientSocket = (Socket)clientSocket; while (true) { try { //通过clientSocket接收数据 var receiveNumber = myClientSocket.Receive(Result); Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint, Encoding.ASCII.GetString(Result, 0, receiveNumber)); } catch(Exception ex) { Console.WriteLine(ex.Message); myClientSocket.Shutdown(SocketShutdown.Both); myClientSocket.Close(); break; } } } }}
客户端代码:
using System;using System.Text;using System.Net;using System.Net.Sockets;using System.Threading;namespace SocketClient{ class Program { private static readonly byte[] Result = new byte[1024]; private static void Main() { //设定服务器IP地址 var ip = IPAddress.Parse("127.0.0.1"); var clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { clientSocket.Connect(new IPEndPoint(ip, 8885)); //配置服务器IP与端口 Console.WriteLine("连接服务器成功"); } catch { Console.WriteLine("连接服务器失败,请按回车键退出!"); return; } //通过clientSocket接收数据 var receiveLength = clientSocket.Receive(Result); Console.WriteLine("接收服务器消息:{0}",Encoding.ASCII.GetString(Result,0,receiveLength)); //通过 clientSocket 发送数据 for (int i = 0; i < 10; i++) { try { Thread.Sleep(1000); //等待1秒钟 var sendMessage = "client send Message Help " + DateTime.Now; clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage)); Console.WriteLine("向服务器发送消息:{0}" + sendMessage); } catch { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); break; } } Console.WriteLine("发送完毕,按回车键退出"); Console.ReadLine(); } }}
0 0
- C# Socket通信实例
- C# SOCKET UDP通信实例
- C# SOCKET UDP通信实例
- 利用C#进行Socket通信编实例
- C#中Socket通信用法实例详解
- 利用C#进行Socket通信编程之二:一个实例
- 利用C#进行Socket通信编程之二:一个实例
- C#中异步Socket通信编程代码实例
- socket TCP通信实例
- java Socket通信实例
- Socket通信实例
- Socket通信实例
- java Socket通信实例
- socket通信实例
- Socket通信实例
- java socket 通信实例
- java socket通信实例
- JAVA socket通信实例
- mybatis调用存储过程
- dB 分贝概念
- 【转】Java NIO(一)
- maven-compiler-plugin插件打jar包
- Linux下怎样搜索文件
- C# Socket通信实例
- 微信运动作弊 竟然可以刷步数,一起看下微信怎么刷步数,探秘微信刷步的原理
- linux---vi 常用命令
- qml实现滚动条
- 数据安全隔离(DSA)大势所趋啊
- OpenSSL支持TLS1.3特性前瞻
- 【转】Java NIO(二)
- java转换json需要导入的jar包
- HED神经网