/*
* tcpserver.cpp
*
* Created on: Mar 7, 2011
* Author: root
*/
#include<iostream>
#include<sys/socket.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#include<stdio.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>
#define MAXSIZE 100
#define SERVER_PORT 10000
using namespace std;
int main(int arg, int arv[]) {
int sockfd, new_fd;
struct sockaddr_in serveraddr, clientaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
cout << "socket err !" << endl;
exit(1);
}
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(SERVER_PORT);
serveraddr.sin_family = AF_INET;
if (bind(sockfd, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) == -1) {
cout << "bind err" << endl;
exit(1);
}
if (listen(sockfd, MAXSIZE) == -1) {
cout << "listen err" << endl;
exit(1);
}
cout << "TCP server start success !" << endl;
socklen_t sin_size;
while (1) {
sin_size = sizeof(struct sockaddr_in);
if ((new_fd
= accept(sockfd, (struct sockaddr *) &clientaddr, &sin_size))
== -1) {
cout << "accept err" << endl;
continue;
}
cout << "get connect from :" << inet_ntoa(clientaddr.sin_addr) << endl;
if (fork() == 0) {
if (send(new_fd, "hello client /n", 14, 0) == -1) {
cout << "send err" << endl;
}
char buff[100];
int re;
if ((re=recv(new_fd, buff, 100, 0)) >0 ) {
cout << "from client :" << inet_ntoa(clientaddr.sin_addr)
<< " " << buff << endl;
} else {
cout << "recver nothing " <<re<< endl;
}
}
close(new_fd);
}
}
/*
* TCPclient.cpp
*
* Created on: Mar 7, 2011
* Author: root
*/
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include <arpa/inet.h>
#define BUFFSIZE 100
using namespace std;
int main(int arg, char* arv[]) {
struct sockaddr_in serveraddr;
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
if (arg < 3) {
if (inet_pton(AF_INET, "127.0.0.1", &serveraddr.sin_addr) <= 0) {
cout << "Initializing server ip err " << endl;
exit(1);
}
serveraddr.sin_port = htons(10000);
} else {
if (inet_pton(AF_INET, arv[1], &serveraddr.sin_addr) <= 0) {
cout << "Initializing server ip err " << endl;
exit(1);
}
int port = atoi(arv[2]);
serveraddr.sin_port = htons(port);
}
int sockfd;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
cout << "socket err" << endl;
exit(1);
}
if (connect(sockfd, (struct sockaddr*) &serveraddr, sizeof(serveraddr))
!= 0) {
cout << "connect err " << endl;
exit(1);
}
char buff[BUFFSIZE];
int revfd;
revfd = recv(sockfd, buff, BUFFSIZE, 0);
if (revfd > 0) {
cout << "recver from server :" << buff << endl;
}
if (send(sockfd, "hello server /n", 20, 0) == -1) {
cout << "send message to server err !" << endl;
} else {
cout<<"send success !"<<endl;
}
}