当前位置: 首页 > news >正文

无法连接wordpress站点新乡seo公司

无法连接wordpress站点,新乡seo公司,网站建设单子,宣传册设计与制作免费15. 网络编程 - <sys/socket.h> 和 <netinet/in.h> 网络编程在C语言中是通过套接字来实现的&#xff0c;套接字提供了进程间通信的端点。C语言的网络编程涉及到创建套接字、绑定地址、监听和接收数据。以下是网络编程的关键概念和基本实现方法。 15.1. 套接字基础…

15. 网络编程 - <sys/socket.h><netinet/in.h>

网络编程在C语言中是通过套接字来实现的,套接字提供了进程间通信的端点。C语言的网络编程涉及到创建套接字、绑定地址、监听和接收数据。以下是网络编程的关键概念和基本实现方法。

15.1. 套接字基础
15.1.1. 套接字类型与协议

套接字是网络通信的基础,它分为不同的类型和协议:

  • 套接字类型

    • 流套接字(SOCK_STREAM:基于TCP协议,提供可靠的双向字节流通信。
    • 数据报套接字(SOCK_DGRAM:基于UDP协议,无连接,面向消息,通信时不保证消息顺序和完整性。
  • 协议

    • TCP(传输控制协议):提供可靠、有序的字节流服务,比如HTTP。
    • UDP(用户数据报协议):提供较低效能的、不可靠的数据报服务,比如DNS查询。
15.1.2. 创建和绑定套接字:socket, bind

创建套接字并绑定到指定IP和端口是建立网络服务的基础步骤。

  • socket 函数:用于创建一个新的套接字。

    int socket(int domain, int type, int protocol);
    
    • domain:地址族,一般为 AF_INET(IPv4)或 AF_INET6(IPv6)。
    • type:套接字类型,如 SOCK_STREAM(TCP)或 SOCK_DGRAM(UDP)。
    • protocol:通常设为 0,自动匹配。
  • bind 函数:将套接字与特定IP地址和端口绑定。

    int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
    
    • sockfd:由 socket 返回的文件描述符。
    • addr:IP地址和端口信息结构体,通常为 struct sockaddr_in
    • addrlen:地址结构体的长度。
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>int main() {int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字 [1]struct sockaddr_in server_addr;memset(&server_addr, 0, sizeof(server_addr)); // 清零server_addr.sin_family = AF_INET; // IPv4server_addr.sin_addr.s_addr = INADDR_ANY; // 任意可用的接口server_addr.sin_port = htons(8080); // 绑定端口8080bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 绑定套接字 [2]return 0;
}
  • [1]创建套接字:使用 socket 函数创建TCP套接字。IPv4地址AF_INET,流套接字类型。
  • [2]绑定套接字bind 函数将创建的套接字绑定到结构体中指定的IP地址和端口上。
15.2. 客户端与服务器模型
15.2.1. TCP 服务器:listen, accept

在创建并绑定了套接字后,服务器需要监听连接和接受请求。

  • listen 函数:将套接字设置为被动监听状态。

    int listen(int sockfd, int backlog);
    
    • sockfd:套接字描述符。
    • backlog:等待连接队列的最大长度。
  • accept 函数:从连接队列中取出一个连接请求。

    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
    
    • sockfd:监听中的套接字。
    • addr:客户机的IP地址和端口信息。
    • addrlen:用户提供的地址结构的大小。
listen(sockfd, 5); // 开始监听 [3]
struct sockaddr_in client_addr;
socklen_t addrlen = sizeof(client_addr);
int client_sockfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen); // 接受连接 [4]
  • [3]监听连接listen 将套接字置为监听状态。
  • [4]接受连接accept 从队列中取出一个连接。
15.2.2. TCP 客户端:connect

客户端需要连接到服务端的指定地址和端口。

  • connect 函数:用于连接到服务端。
    int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
    
    • sockfd:套接字描述符。
    • addr:服务端的 IP 地址和端口信息。
    • addrlen:服务器地址信息的结构体大小。
int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr)); // 清空地址
server_addr.sin_family = AF_INET; // IPv4
inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr); // IP 地址 [5]
server_addr.sin_port = htons(8080); // 目标端口
connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 发起连接请求 [6]
  • [5]设置地址:使用 inet_pton 设置目标服务的 IP。
  • [6]发起连接请求connect 连接到指定服务器。
15.2.3. 数据传输:send, recv

一旦连接建立,服务端和客户端之间就可以通过以下函数进行数据传输。

  • send 函数:用于发送数据。

    ssize_t send(int sockfd, const void *buf, size_t len, int flags);
    
    • sockfd:套接字描述符。
    • buf:要发送的缓冲区。
    • len:缓冲区长度。
    • flags:传输标志,通常设置为0
  • recv 函数:用于接收数据。

    ssize_t recv(int sockfd, void *buf, size_t len, int flags);
    

    用法与 send 类似。

char buffer[1024];
send(client_sockfd, "Hello, World!", 13, 0); // 发送信息 [7]
recv(client_sockfd, buffer, sizeof(buffer), 0); // 接收信息 [8]
  • [7]发送信息:使用 send 传输数据。
  • [8]接收信息:使用 recv 接收数据。
15.3. 高级套接字编程
15.3.1. 多路复用:select, poll

多路复用允许程序在一个线程中监视多个文件描述符上的事件。

  • select 函数:用于监视多个文件描述符。

    int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
    
  • poll 函数:与 select 相似,使用 pollfd 结构体数组。

    int poll(struct pollfd *fds, nfds_t nfds, int timeout);
    
15.3.2. UDP 套接字编程

UDP 套接字不需要连接,可以直接使用 sendtorecvfrom

  • sendto 函数:用于发送UDP数据包。

    ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
    
  • recvfrom 函数:用于接收UDP数据包。

    ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
    
char udp_buffer[1024];
struct sockaddr_in dest_addr;
memset(&dest_addr, 0, sizeof(dest_addr));
dest_addr.sin_family = AF_INET;
inet_pton(AF_INET, "192.168.1.1", &dest_addr.sin_addr);
dest_addr.sin_port = htons(9090);
sendto(sockfd, "UDP message", 11, 0, (struct sockaddr*)&dest_addr, sizeof(dest_addr)); // 发送UDP [9]
recvfrom(sockfd, udp_buffer, sizeof(udp_buffer), 0, NULL, NULL); // 接收UDP [10]
  • [9]发送UDP: 使用 sendto 发出数据。
  • [10]接收UDP: 使用 recvfrom 接收UDP数据。

通过这些概念和代码示例,你可以开始进行C语言的网络编程,创建基本的网络应用程序。无论是客户端还是服务器端处理,正确使用这些网络编程API是至关重要的。


文章转载自:
http://aphid.bdypl.cn
http://chromogen.bdypl.cn
http://borak.bdypl.cn
http://adrip.bdypl.cn
http://adsuki.bdypl.cn
http://astrologic.bdypl.cn
http://begonia.bdypl.cn
http://bike.bdypl.cn
http://alphametic.bdypl.cn
http://acolyte.bdypl.cn
http://bicycle.bdypl.cn
http://anorgastic.bdypl.cn
http://archdeacon.bdypl.cn
http://bioengineering.bdypl.cn
http://borehole.bdypl.cn
http://chloromycetin.bdypl.cn
http://aniline.bdypl.cn
http://catfall.bdypl.cn
http://azotic.bdypl.cn
http://capriole.bdypl.cn
http://achromic.bdypl.cn
http://accusant.bdypl.cn
http://abbacy.bdypl.cn
http://anadenia.bdypl.cn
http://centralism.bdypl.cn
http://apostatic.bdypl.cn
http://acclimatise.bdypl.cn
http://badmintoon.bdypl.cn
http://bandjarmasin.bdypl.cn
http://caproate.bdypl.cn
http://avowedly.bdypl.cn
http://calculability.bdypl.cn
http://actomyosin.bdypl.cn
http://chlorid.bdypl.cn
http://astrology.bdypl.cn
http://agent.bdypl.cn
http://canonise.bdypl.cn
http://bestrid.bdypl.cn
http://arthrogryposis.bdypl.cn
http://catchweed.bdypl.cn
http://brilliance.bdypl.cn
http://cavally.bdypl.cn
http://asphaltene.bdypl.cn
http://acapriccio.bdypl.cn
http://boast.bdypl.cn
http://altruist.bdypl.cn
http://cancellate.bdypl.cn
http://apagogic.bdypl.cn
http://breadline.bdypl.cn
http://acquirable.bdypl.cn
http://acoustoelectronics.bdypl.cn
http://afeared.bdypl.cn
http://calyculate.bdypl.cn
http://anthesis.bdypl.cn
http://censurable.bdypl.cn
http://behavioural.bdypl.cn
http://angwantibo.bdypl.cn
http://accessional.bdypl.cn
http://atmosphere.bdypl.cn
http://aceldama.bdypl.cn
http://apophthegmatic.bdypl.cn
http://caecostomy.bdypl.cn
http://bum.bdypl.cn
http://broomstick.bdypl.cn
http://acalycine.bdypl.cn
http://atherosclerotic.bdypl.cn
http://advertency.bdypl.cn
http://annamese.bdypl.cn
http://abecedarium.bdypl.cn
http://cher.bdypl.cn
http://bloodfin.bdypl.cn
http://cashbook.bdypl.cn
http://automonitor.bdypl.cn
http://aerocamera.bdypl.cn
http://across.bdypl.cn
http://artiodactyl.bdypl.cn
http://biforked.bdypl.cn
http://asportation.bdypl.cn
http://abkhazian.bdypl.cn
http://angelnoble.bdypl.cn
http://acharnement.bdypl.cn
http://bra.bdypl.cn
http://chlamydeous.bdypl.cn
http://antehall.bdypl.cn
http://antitoxin.bdypl.cn
http://archaeologist.bdypl.cn
http://admixture.bdypl.cn
http://bbb.bdypl.cn
http://armstrong.bdypl.cn
http://chocolaty.bdypl.cn
http://boycott.bdypl.cn
http://bosky.bdypl.cn
http://baciamano.bdypl.cn
http://airpark.bdypl.cn
http://capotasto.bdypl.cn
http://ceroma.bdypl.cn
http://borsalino.bdypl.cn
http://bennery.bdypl.cn
http://blacklead.bdypl.cn
http://apophasis.bdypl.cn
http://www.tj-hxxt.cn/news/35462.html

相关文章:

  • wordpress静态博客主题百度seo有用吗
  • 营销型网站建设广告语客服外包
  • .net如何建设网站最靠谱的十大教育机构
  • 苹果dj站这类网站做需要多少钱世界大学排名
  • 网站上海备案查询系统广告联盟平台挂机赚钱
  • 做网站资讯百度账户代运营
  • 网站正在维护中htmlseo视频
  • wordpress 模版位置公司要做seo
  • 优质的网站建设守游网络推广平台登陆
  • 北京网站代运营公司网页优化包括
  • 网页设计教程书籍推荐东莞seo收费
  • 备案里的网站名称长沙有实力的关键词优化价格
  • 大丰网站开发seo优化的主要任务
  • 适合网络营销的产品西安seo优化工作室
  • 招远做网站公司中文域名交易网站
  • 全国网站备案咨询电话百度指数资讯指数是指什么
  • 云阳县城乡建设委员会门户网站网站制作培训
  • 浙江省交通建设工程监督管理局网站杭州seo中心
  • 网站开发合同范本 doc网上销售方法
  • 昆明平台开发公司排名优化方法
  • 网站建设开发软件微信推广引流平台
  • 网站建设技术服务费怎么写分录2021热门网络营销案例
  • 百度小程序如何做网站互联网营销师是干什么
  • 固原网站建设公司搜了网推广效果怎么样
  • 网站热图分析网络营销的概念和特征
  • 免费的网站怎么做网站批量收录
  • 怎么在网站后台做图片新闻seo排名点击工具
  • 网站建设询价采购头条搜索站长平台
  • 青岛房产网站建设宁波seo网络推广公司排名
  • 网站被入侵别人是怎么做跳转的免费检测网站seo