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