#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<unistd.h>
#include<netinet/in.h>
#include <errno.h>
int main(int argc, char** argv){
int socketfd = 0;
char sendbuf[1024];
char recvbuf[1024];
struct sockaddr_in server_addr;
int port = 8001;
int nbytes;
if((socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == 0){
fprintf(stderr, "socket Error:%s\n\a", strerror(errno));
exit(1);
}
bzero(&server_addr, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if((connect(socketfd, &server_addr, sizeof(server_addr))) == -1){
fprintf(stderr, "connect Error:%s\n\a", strerror(errno));
exit(1);
}
while(1){
nbytes = recv(socketfd, recvbuf, sizeof(recvbuf), 0);
recvbuf[nbytes] = '\0';
printf("recv data is:%s\n",recvbuf);
printf("Input:");
scanf("%s", sendbuf);
send(socketfd, sendbuf, sizeof(sendbuf), MSG_NOSIGNAL);
}
close(socketfd);
exit(0);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<unistd.h>
#include<netinet/in.h>
#include <signal.h>
#include <errno.h>
int main(int argc, char** argv){
int old_fd,new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char recvbuf[1024];
int port = 8001;
int len,nbytes;
if((old_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == 0){
fprintf(stderr, "socket Error:%s\n\a", strerror(errno));
exit(1);
}
bzero(&server_addr, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
if((bind(old_fd, &server_addr, sizeof(server_addr))) == -1){
fprintf(stderr, "bind Error:%s\n\a", strerror(errno));
exit(1);
}
//listen的第二个参数backlog为内核缓存队列长度,该队列针对每个监听套接字包含两个队列:
//一是未完成三次握手的,二是完成三次握手的
if(listen(old_fd, 10) == -1){
fprintf(stderr, "listen Error:%s\n\a", strerror(errno));
exit(1);
}
while(1){
len = sizeof(struct sockaddr_in);
if ((new_fd = accept(old_fd,
(struct sockaddr *)&client_addr,
&len)) == -1) {
fprintf(stderr, "Accept error:%s\n\a", strerror(errno));
exit(1);
}
while(1){
if (send(new_fd, "hello fredric", strlen("hello fredric"), MSG_NOSIGNAL) == -1) {
fprintf(stderr, "send error:%s\n", strerror(errno));
exit(1);
}
nbytes = recv(new_fd, recvbuf, sizeof(recvbuf), 0);
recvbuf[nbytes] = '\0';
printf("recv data is:%s\n",recvbuf);
}
close(new_fd);
}
close(old_fd);
exit(0);
}