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

网络编程-创建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.xdnf.cn/news/18641.html

相关文章:

  • 疏老师-python训练营-Day54Inception网络及其思考
  • 屏幕类型与信号接口
  • 【KO】前端面试一
  • LLaMA-Factory 中配置文件或命令行里各个参数的含义
  • 如何利用 DeepSeek 提升工作效率
  • 10.Shell脚本修炼手册---脚本的条件测试与比较
  • 国家自然科学基金(国自然基金)申请技巧详解
  • 深度学习入门:神经网络
  • 【2025CVPR-目标检测方向】UniMamba:基于激光雷达的3D目标检测,采用分组高效曼巴语进行统一空间信道表示学习
  • Q/DR/CX7.2-2020 是中国企业标准体系中
  • 一个备份、去除、新增k8s的node标签脚本
  • `strdup` 字符串复制函数
  • 【JVM内存结构系列】二、线程私有区域详解:程序计数器、虚拟机栈、本地方法栈——搞懂栈溢出与线程隔离
  • 奇怪的前端面试题
  • 智能系统与未来生态演进初步思考
  • LangChain4j中集成Redis向量数据库实现Rag
  • 2-4.Python 编码基础 - 流程控制(判断语句、循环语句、break 语句与 continue 语句)
  • 【Python】新手入门:Python标准库有哪些常用模块?
  • 容器安全实践(二):实践篇 - 从 `Dockerfile` 到 Pod 的权限深耕
  • 美食菜谱数据集(13943条)收集 | 智能体知识库 | AI大模型训练
  • 自学嵌入式第二十六天:数据结构-哈希表、内核链表
  • 从0开始学习Java+AI知识点总结-23.web实战案例(班级和学生增删改查、信息统计)
  • 【Prometheus】Prometheus监控Docker实战
  • C++编程语言:标准库:第36章——字符串类(Bjarne Stroustrup)
  • 【C语言16天强化训练】从基础入门到进阶:Day 8
  • Krea Video:Krea AI推出的AI视频生成工具
  • 知识蒸馏 Knowledge Distillation 序列的联合概率 分解成 基于历史的条件概率的连乘序列
  • 大模型——深度评测智能体平台Coze Studio
  • 2025-08-23 李沐深度学习19——长短期记忆网络LSTM
  • Kafka Streams vs Apache Flink vs Apache Storm: 实时流处理方案对比与选型建议