基于C#的同步Socket程序(TCP)
来源:互联网 发布:杜比音效增强软件 编辑:程序博客网 时间:2024/06/03 18:59
我们来编写一套简单的网络程序,这套网络程序分为客户端和服务端俩部分,客户端发送一行文本给服务器,服务器收到后将文本稍作改动后发回给客户端。
(注意:本程序使用的是TCP协议,并且为同步模式,后续我会再补充异步模式)
1.下图展示了一套基本的Socket通信流程。
2.Socket通信的基本流程具体步骤如下所示:
(1)开启一个连接之前,需要先完成Socket和Bind俩个步骤。Socket是新建一个套接字,Bind指定套接字的IP和端口(客户端在调用Connect时会由系统分配端口,因此可以省去Bind)
(2)服务器通过Listen开启监听,等待客户端接入。
(3)客户端通过Connect连接服务器,服务器通过Accept接收客户端连接。在connect-accept过程中,操作系统将会进行三次握手。
(4)客户端和服务端通过send(),receive()发送和接收数据,操作系统将会完成TCP数据的确认,重发等步骤。
(5)通过close关闭连接,操作系统会进行四次握手。
3.服务端代码如下:
using System;using System.Net;using System.Net.Sockets;namespace SyncTCPServer{class MainClass{public static void Main (string[] args){//socketSocket listenfd = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//bind//本机的ip地址和端口号IPAddress ipAdr = IPAddress.Parse ("127.0.0.1");IPEndPoint ipEp = new IPEndPoint (ipAdr, 1234);listenfd.Bind (ipEp);//Listenlistenfd.Listen(0);Console.WriteLine ("[服务器]启动成功");while (true) {//AcceptSocket connfd = listenfd.Accept ();Console.WriteLine ("[服务器]Accept");//Recvbyte[] readBuff = new byte[1024];int count = connfd.Receive (readBuff);string str = System.Text.Encoding.UTF8.GetString (readBuff, 0, count);Console.WriteLine ("[服务器接收]" + str);//Sendbyte[] bytes = System.Text.Encoding.Default.GetBytes ("serv echo:" + str);connfd.Send (bytes);}}}}4.客户端代码如下:
using System;using System.Net;using System.Net.Sockets;namespace SyncTCPClient{class MainClass{public static void Main (string[] args){//SocketSocket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);Console.WriteLine (socket.LocalEndPoint);//Connect//要连接的服务器的ip地址与端口号IPAddress ipAdr=IPAddress.Parse("127.0.0.1");IPEndPoint ipEp = new IPEndPoint (ipAdr, 1234);socket.Connect (ipEp);//Sendstring str = "Hello World";byte[] bytes = System.Text.Encoding.Default.GetBytes (str);socket.Send (bytes);//Recvbyte[] readBuff=new byte[1024];int count=socket.Receive(readBuff);str = System.Text.Encoding.UTF8.GetString (readBuff,0,count);Console.WriteLine (str);//Closesocket.Close();Console.Read ();}}}5.运行结果如下:
阅读全文
1 0
- 基于C#的同步Socket程序(TCP)
- 基于C#的异步Socket程序(TCP)
- 基于C#的socket编程的TCP同步实现
- 【转载】基于C#的socket编程的TCP同步实现
- 基于TCP的socket程序
- C#的Socket程序(TCP)
- C#的Socket程序(TCP)
- C#的Socket程序(TCP) 【转载】
- C#的Socket程序(TCP)
- C#的Socket程序(TCP)
- C#的Socket程序(TCP)
- C#的Socket程序(TCP)
- C#的Socket程序"TCP"
- 基于C#的Socket同步和异步通信(TCP/UDP)【入门推荐】
- C#基于TCP的Socket通信
- C#基于TCP的Socket通信
- 基于tcp的socket通信程序
- Java基于Tcp的socket聊天程序
- ASP.NET
- RGB颜色值在线转换工具
- 知乎数据爬虫分析+知乎精品2000问
- 使用Spring框架下的JdbcTemplate 完成对数据库的增删改查操作
- ROT-13
- 基于C#的同步Socket程序(TCP)
- 权利的游戏
- JavaScript数组
- 各种上拉下拉刷新的方法
- 日志配置
- 全局中间件
- lintCode-落单的数III
- java操作spark读写mongodb
- 一位程序员工作10年总结的13个忠告