📄 client.c
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include <fcntl.h>#include <string.h>#include <time.h>#define TCP_BUFFER_SIZE 0X10000#define PACKET_SIZE 4096#define STRLEN 0x100int main(){ int sockfd; char buffer[PACKET_SIZE]; struct sockaddr_in svr_addr, client_addr; struct hostent *host; int port, nbytes; int seq = 0; unsigned int i, iret; unsigned short datalen, offsetd; unsigned char offsets, bytes; unsigned char tmpbuf[STRLEN]; int buffer_size, opt; if((sockfd = socket(AF_INET, SOCK_STREAM,0)) == -1) { fprintf(stderr, "socket error :%s\a\n", strerror(errno)); exit(1); } bzero(&client_addr, sizeof(client_addr)); client_addr.sin_family=AF_INET; client_addr.sin_port=htons(0); client_addr.sin_addr.s_addr=htonl(INADDR_ANY); if (bind(sockfd, (struct sockaddr*)(&client_addr), sizeof(struct sockaddr)) == -1) { fprintf(stderr, "Bind address error\n"); exit(1); } bzero(&svr_addr, sizeof(svr_addr)); svr_addr.sin_family=AF_INET; svr_addr.sin_port=htons(5986); svr_addr.sin_addr.s_addr= inet_addr("192.168.12.79"); if(connect(sockfd, (struct sockaddr*)(&svr_addr), sizeof(struct sockaddr)) == -1) { fprintf(stderr, "connect error:%s\n", strerror(errno)); exit(1); } fprintf(stderr, "connect success\n"); opt = 1; buffer_size = TCP_BUFFER_SIZE; if ((setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &buffer_size, sizeof(opt)) != 0) ||(setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &buffer_size, sizeof(opt)) != 0)) { fprintf(stderr, "setsockopt error:%s\n", strerror(errno)); exit(1); } for(i=0;i<=STRLEN;i++) { tmpbuf[i] = i;} datalen = 100; offsetd = 0; offsets = 0; while (1) { if (datalen >= STRLEN) { datalen = 100;} if (datalen+offsetd+3 >= PACKET_SIZE) { iret = send(sockfd, buffer, offsetd, 0); fprintf(stderr, "send datalen = %d\n", iret); offsetd = 0; } buffer[offsetd] = (datalen+3) & 0xff; buffer[offsetd+1] = ((datalen+3)>>8) & 0xff; buffer[offsetd+2] = 0x04; offsetd += 3; bytes = STRLEN - offsets; if (bytes >= datalen) { memcpy(buffer+offsetd, tmpbuf+offsets, datalen); } else { memcpy(buffer+offsetd, tmpbuf+offsets, bytes); memcpy(buffer+offsetd+bytes, tmpbuf, datalen-bytes); } offsetd += datalen; offsets += datalen; datalen++; //usleep(100); }//while close(sockfd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -