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);
}