一、tcpserver.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define PORT 8888
#define MAXSIZE 128
int main()
{
int ser_sockfd, cli_sockfd;
struct sockaddr_in sin, cin;
int addrlen = sizeof(struct sockaddr_in);
int on = 1, n, i;
char getbuf[MAXSIZE], putbuf[MAXSIZE];
ser_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(ser_sockfd < 0)
{
perror("socket");
exit(1);
}
setsockopt(ser_sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
bzero(&sin, addrlen);
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(ser_sockfd, (struct sockaddr *)&sin, addrlen) < 0)
{
perror("bind");
exit(1);
}
if(listen(ser_sockfd, 20) < 0)
{
perror("listen");
exit(1);
}
printf("Waiting accept from client....\n");
while(1)
{
cli_sockfd = accept(ser_sockfd, (struct sockaddr *)&cin, &addrlen);
if(cli_sockfd < 0)
{
perror("accept");
exit(1);
}
bzero(getbuf, sizeof(getbuf));
n = recv(cli_sockfd, getbuf, MAXSIZE, 0);
printf("Receviced from client is %s\n", getbuf);
for(i = 0; i < n; i++)
{
putbuf[i] = toupper(getbuf[i]);
}
send(cli_sockfd, putbuf, n, 0);
sleep(50);
}
close(ser_sockfd);
return 0;
}
二、tcpclient.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#define PORT 8888
#define MAXSIZE 128
#define IP "127.0.0.1"
int main()
{
int sockfd;
struct sockaddr_in cin;
int addrlen = sizeof(struct sockaddr_in);
char getbuf[MAXSIZE];
char *putbuf = "ok";
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
perror("socket");
exit(1);
}
bzero(&cin, addrlen);
cin.sin_family = AF_INET;
cin.sin_port = htons(PORT);
cin.sin_addr.s_addr = inet_addr(IP);
if(connect(sockfd, (struct sockaddr *)&cin, addrlen) < 0)
{
perror("connect");
exit(1);
}
write(sockfd, putbuf, strlen(putbuf) + 1);
read(sockfd, getbuf, MAXSIZE);
printf("Receviced from server is %s\n", getbuf);
close(sockfd);
return 0;
}
三、结果