服务器端:
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 5
int main() {
struct sockaddr_in server_sockaddr, client_sockaddr;
int sin_size, recvbytes;
int sockfd, client_fd;
char buf[MAXDATASIZE];
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
printf("socket success! sockfd = %d\n", sockfd);
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(SERVPORT);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero), 8);
if(bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr)) == -1) {
perror("bind");
exit(1);
}
printf("bind success!\n");
if(listen(sockfd, BACKLOG) == -1) {
perror("listen");
exit(1);
}
printf("listening!\n");
if((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size)) == -1) {
perror("accept");
exit(1);
}
if((recvbytes = recv(client_fd, buf, MAXDATASIZE, 0)) == -1) {
perror("recv");
exit(1);
}
//cout << "received a connection: " << buf << endl;
close(sockfd);
return 0;
}
客户端:
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define MAXDATASIZE 100
int main(int argc, char *argv[]) {
int sockfd, sendbytes;
char buf[MAXDATASIZE];
struct hostent *host;
struct sockaddr_in serv_addr;
if(argv < 2) {
fprintf(stderr, "Please enter the server is hostname!\n");
exit(1);
}
if((host = gethostbyname(argv[1])) == NULL) {
perror("gethostbyname");
exit(1);
}
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(SERVPORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);
if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1) {
perror("connect");
exit(1);
}
if((sendbytes = send(sockfd, "hello", 5, 0)) == -1) {
perror("send");
exit(1);
}
char revcBuf[100];
recv(sockfd, revcBuf, 100, 0);
close(sockfd);
return 0;
}