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

网络编程-创建TCP协议服务器

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

头文件:  #include <sys/socket.h>

#include <netinet/in.h>
#include <netinet/ip.h>

int skt_tcpfd;

int domain;

skt_tcpfd=socket(AF_INET,SOCK_STREAM,0);

 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

头文件:  #include <sys/socket.h>

#include <netinet/in.h>
#include <netinet/ip.h>

int retval;

 struct sockaddr_in {
sa_family_t    sin_family; /* address family: AF_INET */
in_port_t      sin_port;   /* port in network byte order */
struct in_addr sin_addr;   /* internet address */
};

 /* Internet address */
struct in_addr {
uint32_t       s_addr;     /* address in network byte order */
};

const struct sockaddr *address;

 struct sockaddr_in addr_info;

addr_info.sin_family=AF_INET;
addr_info.sin_port=htons(6666);
addr_info.sin_addr.s_addr=htonl(INADDR_ANY);

(struct sockaddr *)&addr_info;

retval=bind(skt_tcpfd,(struct sockaddr *)&addr_info,sizeof(addrinfo));

int listen(int socket, int backlog);

头文件 #include <sys/socket.h>

int backlog最大监听数量

listen(skt_tcpfd,100)

int accept(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);

头文件 #include <sys/socket.h>

#include <netinet/in.h>
#include <netinet/ip.h>

struct sockaddr *restrict address;

 struct sockaddr_in {
sa_family_t    sin_family; /* address family: AF_INET */
in_port_t      sin_port;   /* port in network byte order */
struct in_addr sin_addr;   /* internet address */
};

 /* Internet address */
struct in_addr {
uint32_t       s_addr;     /* address in network byte order */
};

struct sockaddr_in address;

(struct sockaddr *)&address;

socklen_t *restrict address_len;

socklen_t len=sizeof(address);

int clt_tcpfd=accept(skt_tcpfd,(struct sockaddr *)&address,&len);

int connect(int socket, const struct sockaddr *address,
socklen_t address_len);

头文件:#include <sys/socket.h>

#include <netinet/in.h>
#include <netinet/ip.h>

 struct sockaddr_in {
sa_family_t    sin_family; /* address family: AF_INET */
in_port_t      sin_port;   /* port in network byte order */
struct in_addr sin_addr;   /* internet address */
};

 /* Internet address */
struct in_addr {
uint32_t       s_addr;     /* address in network byte order */
};

const struct sockaddr *address;

 struct sockaddr_in addr_info;

addr_info.sin_family=AF_INET;
addr_info.sin_port=htons(6666);

addr_info.sin_addr.s_addr=inet_addr("192.168.41.186");

(struct sockaddr *)&addr_info;

   int retval=connect(skt_tcpfd,(struct sockaddr *)&addr_info,sizeof(addr_info));

示例:TCP_server.c

#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
int main()
{int skt_tcpfd;printf("创建TCP套接字文件描述符\n");skt_tcpfd=socket(AF_INET,SOCK_STREAM,0);//if(skt_fd==-1)//{//	perror("创建TCP套接字文件描述符失败");//}int retval;//struct sockaddr_in {//     sa_family_t    sin_family; /* address family: AF_INET *///      in_port_t      sin_port;   /* port in network byte order *///     struct in_addr sin_addr;   /* internet address */// };struct sockaddr_in addr_info;addr_info.sin_family=AF_INET;addr_info.sin_port=htons(6666);addr_info.sin_addr.s_addr=htonl(INADDR_ANY);//int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);printf("绑定端口号与IP地址\n");retval=bind(skt_tcpfd,(struct sockaddr *)&addr_info,sizeof(addr_info));//if(retval==-1)//{//	perror("绑定端口号及IP地址失败");//}printf("开起监听,最大监听数量为100\n");retval=listen(skt_tcpfd,100);//if(retval==-1)//{//	perror("绑定端口号及IP地址失败");//}//int accept(int socket, struct sockaddr *restrict address,//  socklen_t *restrict address_len);struct sockaddr_in address;socklen_t len = sizeof(address);int clt_tcpfd=accept(skt_tcpfd,(struct sockaddr *)&address,&len);//if(clt_tcpfd==-1)//{//	perror("接收客户端失败");//}char rbuf[1024];ssize_t rd;while(1){memset(rbuf,0,sizeof(rbuf));rd=read(clt_tcpfd,rbuf,sizeof(rbuf));if(rd==-1){perror("server:客户端通信异常\n");return -1;}if(rd==0){printf("server:客户端断开连接\n");break;}printf("客户端发送了%ld字节的消息为:%s\n",rd,rbuf);}close(clt_tcpfd);close(skt_tcpfd);
}

示例:TCP_client.c

#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/ip.h>int main()
{int skt_tcpfd;printf("创建TCP套接字文件描述符\n");skt_tcpfd=socket(AF_INET,SOCK_STREAM,0);//if(skt_fd==-1)//{//	perror("创建TCP套接字文件描述符失败");//}//struct sockaddr_in {//     sa_family_t    sin_family; /* address family: AF_INET *///      in_port_t      sin_port;   /* port in network byte order *///     struct in_addr sin_addr;   /* internet address */// };int retval;struct sockaddr_in addr_info;addr_info.sin_family=AF_INET;addr_info.sin_port=htons(6666);addr_info.sin_addr.s_addr=inet_addr("192.168.41.186");//int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);printf("绑定端口号与IP地址\n");retval=connect(skt_tcpfd,(struct sockaddr *)&addr_info,sizeof(addr_info));//if(retval==-1)//{//	perror("绑定端口号及IP地址失败");//}char wbuf[1024];ssize_t wr;while(1){scanf("%s",wbuf);wr=write(skt_tcpfd,wbuf,strlen(wbuf));}close(skt_tcpfd);
}

http://www.dtcms.com/a/349099.html

相关文章:

  • 后端Web实战-Java代码操作数据库
  • 跨摄像头追踪精度↑79%!陌讯动态决策模型在智慧园区的落地实践
  • 跨摄像头追踪准确率↑18%!陌讯时空感知算法在智慧安防的实战解析
  • 复杂场景鲁棒性突破!陌讯自适应融合算法在厂区越界检测的实战优化​
  • 使用Localtunnel搭建与外网交互简单的https本地服务器
  • 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
  • Windows 系统下 Android SDK 配置教程
  • 【数据结构与算法】并查集
  • 对象作为HashMap的key的注意事项
  • kubernetes集群搭建
  • 【贪心算法】day2
  • Golang云端编程入门指南:前沿框架与技术全景解析
  • 初探机器学习:从概念定义到前沿应用
  • 湖南(源点咨询)市场调研如何在行业研究中快速有效介入(尾篇)
  • mpv - write_video 流程解析
  • 从技术精英到“芯”途末路:一位工程师的沉沦与救赎
  • 暖色调街头人像摄影照片Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • OpenHarmony Audio子系统全栈解码:从HDI驱动到DSP算法的低延迟高保真之路
  • SQL Server缩小日志文件.ldf的方法(适用于开发环境)
  • 复杂水域场景识别率↑89%!陌讯多模态融合算法在岸边垃圾检测的落地实践
  • Python学习笔记之(二)变量和简单的数据类型
  • 鸿蒙中Image白块问题分析与解决方案
  • Java:HashMap的使用
  • 2025/8/24 DockerDesktop安装使用
  • 云原生俱乐部-RH294知识点归纳(3)
  • Python内置函数全解析:30个核心函数语法、案例与最佳实践指南
  • Linux应急响应一般思路(二)
  • C++测试框架高级资源管理模块完整实现指南
  • 八、redis 入门 之 雪崩、穿透、击穿
  • 小米AX3600访问桥接的光猫