丛林战争项目一之TCP客户端、服务端的编写
2017-11-06 15:05
211 查看
一、IP
IP的主要作用就是在复杂的网络环境中将数据包发送给最终的目标地址
1.局域网ip,局域网ip在局域网内是独一无二的
打开控制台,输入ipconfig,输出的IPv4就是本机的地址,一般情况下局域网ip是由192.168.开头的
2.外网ip是共享的,可以通过在浏览器中输入ip进行查询
3.端口号
端口号代表和电脑上的哪个软件进行通信。通过ip找到机器,通过端口号找到和哪个软件进行通信
一般知名端口号在0~1023之间,而我们经常使用的自定义/动态分配的端口号则一般在49152~65535之间
二、TCP与UDP
1.UDP:发送数据迅速,不会管数据是否正确
TCP:发送准确,速度比较慢
2.TCP的三次握手
三、创建服务器端控制台应用程序
1.打开visual studio 2017,文件-->新建-->项目-->Visual C#-->控制台应用(.NET Framework)-->确定
2.创建成功
四、创建服务器端Socket并绑定IP和端口号
五、创建客户端
1.客户端代码
2.在项目的解决方案上点击鼠标左键-->添加-->新项目-->Visual C#项-->控制台应用-->TCP Client
六、运行
1.在项目上右键-->生成
2.右键-->在文件资源管理器中打开文件夹、
3.在文件夹bin下的debug文件夹中的TCP WebServer.exe为生成的文件
4.在visual studio中点击启动,启动服务端
5.双击运行客户端生成的文件
6.先运行服务端,后运行客户端,可以看到客户端出现从服务端发过来的消息
7.在客户端输入内容后可以在服务端收到,左边的界面为服务端,右边的界面为客户端
运行过程中出现的问题
1.“TCP WebServer.exe”(CLR v4.0.30319: DefaultDomain): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll”。无法查找或打开 PDB 文件。
原因:输入的ipd
IPAddress ipAddress = IPAddress.Parse("192.168.1.7"); //创建ip
解决办法:工具-->选项-->调试-->常规-->启用源服务器支持-->确定
2.调试-->符号-->勾选“Microsoft 符号服务器”-->确定
IP的主要作用就是在复杂的网络环境中将数据包发送给最终的目标地址
1.局域网ip,局域网ip在局域网内是独一无二的
打开控制台,输入ipconfig,输出的IPv4就是本机的地址,一般情况下局域网ip是由192.168.开头的
2.外网ip是共享的,可以通过在浏览器中输入ip进行查询
3.端口号
端口号代表和电脑上的哪个软件进行通信。通过ip找到机器,通过端口号找到和哪个软件进行通信
一般知名端口号在0~1023之间,而我们经常使用的自定义/动态分配的端口号则一般在49152~65535之间
二、TCP与UDP
1.UDP:发送数据迅速,不会管数据是否正确
TCP:发送准确,速度比较慢
2.TCP的三次握手
三、创建服务器端控制台应用程序
1.打开visual studio 2017,文件-->新建-->项目-->Visual C#-->控制台应用(.NET Framework)-->确定
2.创建成功
四、创建服务器端Socket并绑定IP和端口号
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets; using System.Net; namespace TCP_WebServer { class Program { static void Main(string[] args) { //服务端的开发 //创建一个Socket Socket serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //192.168.1.7这个是本机的ipv4地址,这个地址是会变动的,路由器运行时间久了就会变化 //127.0.0.1是一个万用地址,如果是在本机上使用则是本机的地址,如果换一台机器,则是另一台机器的地址 //IPAddress:xxx.xx.xx.xx IpEndPoint:xxx.xx.xx.xx:prot //IPAddress iPAddress = new IPAddress(new byte[] { 192,168,1,7}); //这种方式通过传递一个数组将地址解析出来,但是这种方式不推荐 IPAddress ipAddress = IPAddress.Parse("192.168.1.7"); //创建ip IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 180); //绑定端口号 serverSocket.Bind(ipEndPoint); //绑定ip和端口号 serverSocket.Listen(10); //参数backLog为队列中最多可以处理监听多少个 Socket clientSocket = serverSocket.Accept(); //接收一个客户端连接 //向客户端发送一条消息 String msg = "Hello client!你好......"; //需要传递的内容 byte[] data = System.Text.Encoding.UTF8.GetBytes(msg); //因为含有中文,所以需要使用一个可以将中文解析成byte数组的方法 clientSocket.Send(data); //发送消息 //接收客户端的一条消息 byte[] dataBuffer = new byte[1024]; //创建一个数组 int count = clientSocket.Receive(dataBuffer); //接收到了多少数据 string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer,0,count); //从第0个字节开始读取,读取count个 Console.WriteLine(msgReceive); Console.ReadKey(); //运行完等待一段时间 clientSocket.Close(); //关闭客户端的Socket serverSocket.Close(); //关闭服务器端的Socket } } }
五、创建客户端
1.客户端代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets; using System.Net; namespace TCP_Client { class Program { static void Main(string[] args) { //创建socket Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ipAddress = IPAddress.Parse("192.168.1.7"); //创建ip IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 180); //绑定端口号 clientSocket.Connect(ipEndPoint); //与远程主机建立连接 //向客户端发送一条消息 byte[] data = new byte[1024]; int count = clientSocket.Receive(data); //接收数据 String msg = Encoding.UTF8.GetString(data, 0, count); Console.Write(msg); //接收客户端的一条消息 string s = Console.ReadLine(); Console.Write(s); clientSocket.Send(Encoding.UTF8.GetBytes(s)); Console.ReadKey(); clientSocket.Close(); // } } }
2.在项目的解决方案上点击鼠标左键-->添加-->新项目-->Visual C#项-->控制台应用-->TCP Client
六、运行
1.在项目上右键-->生成
2.右键-->在文件资源管理器中打开文件夹、
3.在文件夹bin下的debug文件夹中的TCP WebServer.exe为生成的文件
4.在visual studio中点击启动,启动服务端
5.双击运行客户端生成的文件
6.先运行服务端,后运行客户端,可以看到客户端出现从服务端发过来的消息
7.在客户端输入内容后可以在服务端收到,左边的界面为服务端,右边的界面为客户端
运行过程中出现的问题
1.“TCP WebServer.exe”(CLR v4.0.30319: DefaultDomain): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll”。无法查找或打开 PDB 文件。
原因:输入的ipd
IPAddress ipAddress = IPAddress.Parse("192.168.1.7"); //创建ip
解决办法:工具-->选项-->调试-->常规-->启用源服务器支持-->确定
2.调试-->符号-->勾选“Microsoft 符号服务器”-->确定
相关文章推荐
- [GoLang]GO语言编写的简易TCP服务端、客户端
- Python使用tcp编写一个简易的文件下载器(服务端和客户端)
- php编写TCP服务端和客户端程序
- php编写TCP服务端和客户端程序
- php编写TCP服务端和客户端程序
- 编写一个简单的TCP服务端和客户端
- Python tcp编程,TCP服务端和TCP客户端代码编写
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- php编写TCP服务端和客户端程序
- SQLiteServer+SQLiteClient 用于.Net项目的SQLite服务端程序和客户端类库
- 【转载】Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据,作者:Jaiky_杰哥
- C#网络编程.2.套接字.TcpListener.TcpClient.服务端客户端通信
- 搭建GCM项目——服务端和客户端(二)
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- .Net网络编程——使用TcpClient与TcpListener建立客户端与服务端连接
- Tcp服务端判断客户端是否断开连接
- 【python】tcp网络程序-客户端/服务端
- 基于开源SuperSocket实现客户端和服务端通信项目实战
- 简单TCP服务端和客户端