#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 = ;
char sendbuf[];
char recvbuf[];
struct sockaddr_in server_addr;
int port = ;
int nbytes; if((socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == ){
fprintf(stderr, "socket Error:%s\n\a", strerror(errno));
exit();
} 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))) == -){
fprintf(stderr, "connect Error:%s\n\a", strerror(errno));
exit();
} while(){ nbytes = recv(socketfd, recvbuf, sizeof(recvbuf), );
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();
}
#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[];
int port = ;
int len,nbytes; if((old_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == ){
fprintf(stderr, "socket Error:%s\n\a", strerror(errno));
exit();
} 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))) == -){
fprintf(stderr, "bind Error:%s\n\a", strerror(errno));
exit();
} //listen的第二个参数backlog为内核缓存队列长度,该队列针对每个监听套接字包含两个队列:
//一是未完成三次握手的,二是完成三次握手的
if(listen(old_fd, ) == -){
fprintf(stderr, "listen Error:%s\n\a", strerror(errno));
exit();
} while(){
len = sizeof(struct sockaddr_in);
if ((new_fd = accept(old_fd,
(struct sockaddr *)&client_addr,
&len)) == -) {
fprintf(stderr, "Accept error:%s\n\a", strerror(errno));
exit();
} while(){
if (send(new_fd, "hello fredric", strlen("hello fredric"), MSG_NOSIGNAL) == -) {
fprintf(stderr, "send error:%s\n", strerror(errno));
exit();
} nbytes = recv(new_fd, recvbuf, sizeof(recvbuf), );
recvbuf[nbytes] = '\0'; printf("recv data is:%s\n",recvbuf);
} close(new_fd);
} close(old_fd);
exit();
}