70,023
社区成员




#include "header.h"
#define MAXBUF 1024
typedef struct sockaddr SA;
int main(void)
{
int socketfd,socketfd_server;
struct sockaddr_in serveraddr,clientaddr;
char buffer[MAXBUF];
socklen_t addrlen;
int n;
if((socketfd=socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket fail");
exit(-1);
}
memset(&serveraddr,0,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(8000);
serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
if(bind(socketfd,(SA *)&serveraddr,sizeof(serveraddr)) == -1)
{
perror("bind fail");
exit(-1);
}
if(listen(socketfd,10) == -1)
{
perror("listen fail");
exit(-1);
}
addrlen = sizeof(clientaddr);
if((socketfd_server=accept(socketfd,(SA *)&clientaddr,&addrlen)) == -1) //接收到客户端的消息
{
perror("accept fail");
exit(-1);
}
printf("a new connection :%d\n",socketfd_server); //打印socket连接套接字
int s_length;
int opt_l = sizeof s_length;
getsockopt(socketfd_server,SOL_SOCKET,SO_RCVBUF,&s_length,(socklen_t *)&opt_l); //输出接收缓冲区大小
printf("recv buffer = %d\n",s_length);
sleep(3000);
exit(0);
}
#include "header.h"
#define MAXBUF 32768
typedef struct sockaddr SA;
int main()
{
int socketfd;
char client_buffer[MAXBUF];
struct sockaddr_in serveraddr,clientaddr;
if((socketfd=socket(AF_INET,SOCK_STREAM,0)) == -1) //调用TCP接口,创建套接字
{
perror("socket fail");
exit(-1);
}
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(8000);
serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(socketfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) == -1) //连接服务器套接字 connect()
{
perror("connect fail");
exit(-1);
}
int s_length;
socklen_t optl = sizeof s_length;
getsockopt(socketfd,SOL_SOCKET,SO_SNDBUF,&s_length,&optl); //获得连接套接字发送端缓冲区的信息
printf("send buffer = %d\n",s_length); // 发送缓冲区的大小
getsockopt(socketfd,SOL_SOCKET,SO_RCVBUF,&s_length,&optl); //获得连接套接字的接收端的缓冲区信息
printf("recv buffer = %d\n",s_length); //打印接收端缓冲区大小
int i = 0;
int sum = 0;
while(1){
memset(client_buffer,'\0',sizeof(client_buffer)); //清空缓冲区的数据
sprintf(client_buffer,"the message is %d\n",i++);
if(write(socketfd,client_buffer,MAXBUF) < 0) //写入缓冲区
{
perror("write fail");
exit(-1);
}
sum += MAXBUF;
printf("sum = %d\n",sum);
}
close(socketfd);
}