socket网络编程

网络编程

tcp协议面向连接(字节流),全双工可靠信道,只能点到点

udp协议面向报文,不可靠,支持多对多

端口号作用:通过端口号区分同一主机多个服务

ftp服务器tcp端口号都是21,Telnet服务器tcp端口号23,TFTP(简单文件传输协议)服务器udp端口号69

字节序

字节序:多字节数据在计算机内存中存储或网络传输时各字节存储顺序

little endian小端字节序:将低序字节存储在起始地址

big endian大端字节序:将高序字节存储在起始地址

网络字节序=大端字节序

socket编程起步

套接字(socket)是网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

socket服务器和客户端开发步骤

  1. 创建套接字
  2. 为套接字添加信息(IP和端口号)
  3. 监听网络连接
  4. 监听到客户端接入,接入连接
  5. 数据交互
  6. 关闭套接字,断开连接

Linux提供的api

int socket(int domain,int type,int protocol)

doman:一般为AF_INET(ipv4因特网域)AF_INET6 (ipv6)

type:SOCKET_STREAM(tcp协议) SOCKET_DGRAM(udp)

protpcol:0 根据前两个参数自动选择传输协议

bind(int socketfd, socketaddr *addr, sizeof(sockaddr_in))

1:套接字描述符

2:结构体指针

struct socket_in

{

sa_family_t sin_family; //协议族

in_port_t sin_port; //端口号(低于3000是操作系统使用的,用户用5000-9000)

struct in_addr sin_addr; //ip地址结构体

unsigned char sin_zero[8]; //填充,没有实际意义,只为和socketaddr结构在内存中对齐,这样两者才能互换

}

地址转换api

htons(8988)

主机字节顺序转变成网络字节顺序

int inet_aton(const char* staddr, struct in_addr *addrp)

功能是将一个字符串IP地址转换为一个32位的网络序列IP地址。

char *inet_ntoa(struct in_addr inaddr)

将网络ip地址转化为字符串形式

监听

listen(int sockfd, int backlog)

2:请求队列中最大长度

连接

accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)

2:用来返回已连接的客户端的协议地址

3:客户端地址长度

数据收发

read(),write()

send(),recv()

客户端的connect函数

int connect(int sockfd, const struct aockaddr *addr, socklen_t addrlen)

2:服务器端ip地址和端口号的地址结构指针

3:地址长度常被设为sizeof(struct sockaddr)

cd /usr/include

greap struct sockaddr_in {  *-nir

n显示行号 i不区分大小写 r递归查找

vi linux/in.h +184 打开到184行

man 2 connect

补全的代码

vi  ~/.vim/snippets/c.snippets

71行是一个折叠的代码,zo打开加号,tab #include<stdio.h>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Socket网络编程是一种利用套接字(socket)实现客户端和服务端之间通信的编程技术。通过套接字,应用程序可以在网络上发送和接收数据,并与其他应用程序进行通信。Socket网络编程广泛应用于各种领域,如网络通信、网络游戏、聊天软件、远程监控和在线视频等。开发者需要熟悉相关的技术和编程知识,以实现高效和可靠的网络通信。在编程中,可以使用各种协议(如TCP/IP协议)来实现网络通信,通过socket对象进行数据交换和共享。通过创建套接字并打开网络文件,应用程序可以像操作文件一样对套接字进行读写操作,实现与其他应用程序之间的通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pythonsocket网络编程](https://download.csdn.net/download/qq_41604569/87564062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Socket网络编程](https://blog.csdn.net/weixin_61701822/article/details/131230710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【计算机网络Socket编程](https://blog.csdn.net/m0_69442905/article/details/128701277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值