利用C#进行socket编程(模拟服务器和客户端通信)
来源:互联网 发布:什么动物知天下事 编辑:程序博客网 时间:2024/06/05 04:20
制作网络游戏难免需要使用socket,利用socket可以实现客户端和服务器的数据交换。服务器需要绑定特点IP地址和端口号,而客户端访问服务器也需要连接到服务器的IP和服务器相应的端口号。每台计算机(可以看作服务器)都有唯一的一组IP,正常情况下端口号(0-60000)是软件之间在进行数据交流的唯一通道。
以下有一个简单的服务器端和一个客户端,大致解释了服务器向客户端发送消息的过程:
using System;using System.Net;using System.Net.Sockets;using System.Text;namespace Socket编程_TCP服务器端{ class Program { static void Main(string[] args) { //1,创建socket using System.Net.Sockets; //AddressFamily.InterNetwork内网,SocketType.Stream以流来通信,第三个为协议 Socket tcpSever = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //2,绑定服务器IP(计算机唯一标识)和端口号。端口号将通信数据给指定的软件。一个软件占用一个特定端口号(0-60000) //查看本机IP:cmd-》ipconfig 本机局域网IP:198.168.1.2 //IPAddress ipAddress = new IPAddress(new byte[] { 192,168,1,2}); EndPoint point = new IPEndPoint(IPAddress.Parse("192.168.1.2"),7788);//IPEndPoint是对IP+端口号的一层封装 tcpSever.Bind(point);//向操作系统申请一个可用的IP和端口号做通信。绑定当前IP和端口号 //3.监听。等待客户端连接 tcpSever.Listen(100);//参数是最大连接数 Socket clientSocket= tcpSever.Accept();//暂停当前线程,直到一个客户端连接过来,之后进行下面的代码。返回的socket为客户端socket //使用返回的socket跟客户端做通信 string message = "welcome!"; byte[] meg= Encoding.UTF8.GetBytes(message);//对字符串编码,得带一个字节数组 clientSocket.Send(meg); //接受客户端数据 byte[] buffer = new byte[1024]; int length= clientSocket.Receive(buffer);//接受客户端数据 string mes = Encoding.UTF8.GetString(buffer, 0, length); Console.WriteLine(mes); tcpSever.Close(); Console.ReadKey(); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace Socket_客户端_TCP{ class Program { static void Main(string[] args) { //创建socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //发起连接请求 EndPoint remoteIp = new IPEndPoint(IPAddress.Parse("192.168.1.2"), 7788); tcpClient.Connect(remoteIp);//连接远程已经绑定IP和端口号的服务器端。已连接远程主机。 //从远程主机接受数据并显示在客户端 byte[] buffer = new byte[1024]; int byteNum= tcpClient.Receive(buffer);//将接受到的数据,存入buffer。返回值为接受到的字节数 string message= Encoding.UTF8.GetString(buffer,0,byteNum);//将接受到的数据,转化为字符串 Console.WriteLine(message); //发送给服务器 string clientToSeverMes = "客户端:你好,服务器!"; byte[] cts = Encoding.UTF8.GetBytes(clientToSeverMes); tcpClient.SendTo(cts, remoteIp); Console.ReadKey(); } }}
阅读全文
1 0
- 利用C#进行socket编程(模拟服务器和客户端通信)
- 利用C#进行Socket通信编程之一
- 利用C#进行Socket通信编程之一
- 网络编程(1)--利用socket进行客户端与服务器端的通信
- 利用C#进行Socket通信编程之二:一个实例
- 利用C#进行Socket通信编程之二:一个实例
- C# Socket简单例子(服务器与客户端通信)和客户端批运行
- C#和PHP Socket通信实例代码(服务器与客户端通信)
- C#和PHP Socket通信实例代码(服务器与客户端通信)
- SOCKET 服务器和客户端通信
- Python网络编程之socket编程(一)--使用TCP和UDP客户端和服务器通信
- linux socket 编程一:简单的服务器和客户端通信
- C# socket通信 模拟服务器端、客户端
- C# 利用Socket类实现客户端和服务器之间的通信,可在本机之间实现信息交互
- C# Socket简单例子(服务器与客户端通信)
- C# Socket简单例子(服务器与客户端通信)
- C# Socket简单例子(服务器与客户端通信)
- C# Socket TCP简单例子(服务器与客户端通信)
- 更多的结构化命令
- 开发中常见的路径的问题
- 第12章 泛型程序设计
- 1016. Phone Bills (25)
- 【Mybatis从0到1-008】MyBatis之映射文件(输入映射、输出映射)
- 利用C#进行socket编程(模拟服务器和客户端通信)
- XSD文件与XML文件有什么关系
- 读<参与感>
- Android学习心得(二) 关于getContext()
- Linux文件权限查看及修改命令chmod
- 深入Spring Boot:ClassLoader的继承关系和影响
- Unity入门操作_ 规律移动_007
- 字符编码简说
- Linux下nodejs(一):安装和使用