📄 tcpclient.c
字号:
/*************************************************************************************
*Tcp client program, It is a simple example only.
*
* author: stevenhou
* date: 2007-08-14
*
* connect to server, and echo a message from server.
*
*************************************************************************************/
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <time.h>
#include <stdarg.h>
#define LOGPATH "/var/log/"
#define LOGFILE "log.txt"
FILE *logfp;
#define SERVER_PORT 39000// define the defualt connect port id
#define CLIENT_PORT (int)(20000+1+1000.0*rand()/(RAND_MAX+1.0)) // define the defualt client port as a random port
#define WRITETIMEOUT 60
#define READTIMEOUT 60
#define BUFFER_SIZE 102400
#define REUQEST_MESSAGE "welcome to connect the server.\n"
int printlog(FILE *logfp, char *fmt, ...)
{
va_list ptr;
int rv;
time_t now;
struct tm utctime;
//char *index;
char timestr[20];
time(&now);
gmtime_r(&now, &utctime);
sprintf(timestr, "%02d%02d %02d:%02d:%02d", utctime.tm_mon+1, utctime.tm_mday,\
utctime.tm_hour, utctime.tm_min, utctime.tm_sec);
fprintf(logfp, "%s: ", timestr);
va_start(ptr, fmt);
rv = vfprintf(logfp, fmt,ptr);
va_end(ptr);
return rv;
}
void usage(char *name)
{
printf("usage: %s IpAddr\n",name);
}
int main(int argc, char **argv)
{
int servfd,clifd,length = 0;
struct sockaddr_in servaddr,cliaddr;
socklen_t socklen = sizeof(servaddr);
char buf[BUFFER_SIZE];
char logfile[36];
char writebuf[409600];
int datalen;
int on=1;
char len[4]={0};
int pid=0,i=0,port=0;
long timestamp;
short rcvlen=0;
sprintf(logfile, "%s%s", LOGPATH, LOGFILE);
//fprintf(stderr,"logfile:%s, logfp:%d\r\n", logfile, logfp);
logfp = fopen(logfile, "a");
//fprintf(stderr,"logfile:%s, logfp:%d\r\n", logfile, logfp);
setvbuf(logfp, NULL, _IONBF, 0);
if (argc < 2)
{
usage(argv[0]);
exit(1);
}
if ((clifd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("create socket error!\n");
exit(1);
}
srand(time(NULL));//initialize random generator
//port=2000+1000.0*rand()/(RAND_MAX+1.0);
printf("Port:%d\n",CLIENT_PORT);//
bzero(&cliaddr,sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
cliaddr.sin_port = htons(CLIENT_PORT);
cliaddr.sin_addr.s_addr = htons(INADDR_ANY);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_aton(argv[1],&servaddr.sin_addr);
servaddr.sin_port = htons(SERVER_PORT);
//servaddr.sin_addr.s_addr = htons(INADDR_ANY);
if (bind(clifd,(struct sockaddr*)&cliaddr,sizeof(cliaddr))<0)
{
printf("bind to port %d failure!\n",CLIENT_PORT);
exit(1);
}
if (connect(clifd,(struct sockaddr*)&servaddr, socklen) < 0)
{
printf("can't connect to %s!\n",argv[1]);
exit(1);
}
printf("Connected %s\n",argv[1]);
//setsockopt (clifd,SOL_TCP, TCP_NODELAY, &on, sizeof (on));
while(1){
sprintf(writebuf, "[Request]\r\nCommand=Set\r\nTestPlan_Ver=4.0\r\n\r\n");
datalen = strlen(writebuf);
sprintf(len,"%d",datalen);
timestamp = time(NULL);
//sprintf(buf,"%s",ctime(×tamp));
sprintf(buf,"%d%s",datalen,writebuf);
if (send(clifd, buf, strlen(buf),0) < 0)
return -1;
read(clifd,&rcvlen,2);
memset(buf, 0, sizeof(buf));
if (recv(clifd, buf, rcvlen,0) < 0)
return -1;
printf("Return:%s\n",buf);
sleep(1);
i++;
if(i>10)break;
}
close(clifd);
fclose(logfp);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -