#ifndef CLISERV_H
#define CLISERV_H
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define REQUEST 400
#define REPLY 400
#define UDP_SERV_PORT 7777
#define TCP_SERV_PORT 8888
#endif // CLISERV_H
#include "cliserv.h"
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
struct sockaddr_in serv, cli;
char request[REQUEST], reply[REPLY];
int listenfd, sockfd;
if((listenfd = socket(PF_INET,SOCK_STREAM,0)) < 0)
cerr<<"socket error"<<endl;
memset(&serv, 0, sizeof(serv));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = htonl(INADDR_ANY);
serv.sin_port = htons(TCP_SERV_PORT);
if(bind(listenfd, (struct sockaddr*)&serv, sizeof(serv)) < 0 )
cerr<<"bind error"<<endl;
if(listen(listenfd, SOMAXCONN) < 0 )
cerr<<"listen error"<<endl;
for (;;) {
unsigned int clilen = sizeof (cli);
if((sockfd = accept(listenfd, (struct sockaddr*)&cli, &clilen)) < 0)
cerr << "accpet error" <<endl;
int nleft = REQUEST;
char* ptr = request;
int nread;
while (nleft > 0) {
if((nread = read(sockfd,ptr,nleft)) < 0)
return nread;
else if (nread == 0)
break;
nleft -= nread;
ptr += nread;
}
if (write(sockfd, reply, REPLY) != REPLY)
cerr <<"write error" <<endl;
close(sockfd);
}
return 0;
}
#include "cliserv.h"
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
struct sockaddr_in serv;
char request[REQUEST], reply[REPLY];
int sockfd;
int nleft, nread;
// if(argc != 2)
// cerr<<"usage: tcpcli <IP address of server>"<<endl;
if((sockfd = socket(PF_INET,SOCK_STREAM,0)) < 0)
cerr<<"socket error"<<endl;
memset(&serv,0,sizeof (serv));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = inet_addr("127.0.0.1");
serv.sin_port = htons(TCP_SERV_PORT);
if((connect(sockfd,(struct sockaddr*)&serv,sizeof(serv)) )< 0)
cerr<<"connect error"<<endl;
if( write(sockfd,request,REQUEST) != REQUEST)
cerr<<"write error"<<endl;
nleft = REPLY;
const char* ptr = reply;
string inputstr;
while (nleft > 0) {
if((nread = write(sockfd,(char*)ptr,REPLY) ) < 0)
return nread;
else if (nread == 0)
break;
nleft -= nread;
ptr += nread;
}
close(sockfd);
return 0;
}