博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC++使用socket进行TCP、UDP通信实例总结
阅读量:4587 次
发布时间:2019-06-09

本文共 2428 字,大约阅读时间需要 8 分钟。

1.        两台计算机通信需要协议,通信的两台计算机IP必须唯一

2.        同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一标示。

3.        实际上就类似于一个办公室的总机号码(IP)和分机号码(端口号)

4.        协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定

5.        协议=语义+语法+规则

6.        不同层具有各自不同的协议

7.        上层使用下层提供的服务,实际通信在最底层完成

8.        对等层实体之间虚拟通信|

9.        TCP:面向连接的可靠的传输协议

10.      UDP:面向无连接的不可靠的传输协议

11.    端口是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接后,传输层传给端口的数据都被响应的进行所接收,相应进程发给传输层的数据都通过该端口输出。

12.    端口用一个整数型标示符来表示。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。

13.    端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。例如:http使用的是80端口。

14.    socket(套接字):windows sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。

15.    C/S模式:客户机向服务器提出请求,服务器接收到请求后,提供相应的服务。

16.    套接字的类型

  a)        流式套接字:(SOCK_STREAM):面向连接可靠的数据传输服务,按顺序接收

  b)       数据包式套接字:(SOCK_DGRAM):无连接服务。接收顺序混乱。

  c)       原始套接字(SOCK_RAM)

17.    基于TCP(面向连接)的socket编程

a)        服务器端程序:

                      i.             创建套接字socket

                      ii.             将套接字绑定到一个本地地址和端口上bind

                      iii.             将套接字设为监听模式,准备接收客户请求listen

                      iv.             等待客户请求到了;当请求到来后,接收连接请求,返回一个新的对应于此次连接的套接字accept

                      v.             用返回的套接字和客户端进行通信send/recv

                     vi.             返回,等待另一客户请求

                     vii.             关闭套接字

b)       客户端程序:

                        i.             创建套接字socket

                        ii.             向服务端发出连接请求connect

                        iii.             和服务器端进行通信rend/recv

                        iv.             关闭套接字

18.    基于UDP的socket编程

a)        服务器端(接收端)程序:

                        i.             创建套接字socket

                        ii.             将套接字绑定到一个本地地址和端口上bind

                       iii.             等待接收数据recv/from

                       iv.             关闭套接字

b)       客户端(发送端)程序:

                        i.             创建套接字socket

                        ii.             向服务器发送数据sendto

                        iii.             关闭套接字

19.int WSAStartup (

  WORD wVersionRequested, //打算使用的最高winsock版本号
  LPWSADATA lpWSAData  //是个结构体,接收socket的详细信息 );

20.    alt+F8:格式化代码

21.    面向TCP的连接,服务器端

  a) 套接字

SOCKET socket (
  int af,       //指定地址簇
  int type,     //socket类型
  int protocol  //协议

);

  b) 绑定

int bind (
  SOCKET s,                          //要绑定的套接字
  const struct sockaddr FAR*  name,  //指定了该套接字的本地地址信息
  int namelen                        //该地址结构的长度
);

struct sockaddr {

       u_short    sa_family;

       char       sa_data[14];

};

  c)       监听

int listen (
  SOCKET s,   
  int backlog 
);

  d)       接受连接

SOCKET accept (
  SOCKET s,                  
  struct sockaddr FAR* addr, 
  int FAR* addrlen           
);
 e)  发送
int send (
  SOCKET s,              //建立连接的socket
  const char FAR * buf,  //发送的数据
  int len,               //发送数据的长度
  int flags             
);
  f)  接收
int recv (
  SOCKET s,      
  char FAR* buf, 
  int len,       
  int flags      
);
  g)  需要的文件
#include 
需要连接一个动态链接库:ws2_32.lib

  22.    服务器端:

  a)        Socket

  b)       连接:connect

 int connect (
  SOCKET s,                          
  const struct sockaddr FAR*  name, 
  int namelen                       
);

  c)       接收:recv

  d)       发送:send

  e)        关闭:closesocket

 

参考文献:

1、

2、

转载于:https://www.cnblogs.com/rainbow70626/p/8059270.html

你可能感兴趣的文章
.Net持续集成 —— Jenkins+Git+WebDeploy
查看>>
01_Numpy基本使用
查看>>
checkbox和文字对齐
查看>>
JConsole远程连接配置 服务器监控工具
查看>>
了解HTTP协议栈(实践篇)
查看>>
loj10035. 「一本通 2.1 练习 1」Power Strings
查看>>
%s的用法
查看>>
调用底层不能直接访问的类和方法
查看>>
清理缓存的方法 #DF
查看>>
JAVA array,map 转 json 字符串
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>