socket客户端服务器

服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
#include <stdlib.h>
#include "unistd.h"
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
using std::cin;
using std::cout;
using std::endl;
void sig(int signal){
int ch_pid;
int sta;
while(ch_pid=(waitpid(-1,&sta,0)>0)){}
}
int main(){
signal(SIGCHLD,sig);
int listenfd,confd;
pid_t pid;
socklen_t c_len;
listenfd=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in cliaddr,serveraddr;
bzero(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(4546);
bind(listenfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
listen(listenfd,0);
while(true){
confd = accept(listenfd,(struct sockaddr*)&cliaddr,&c_len);
cout<<"accept"<<endl;
if((pid=fork())==0){
close(listenfd);
write(confd,"hello , I am Server ! n ",100);
close(confd);
exit(0);
return 0;
}
cout<<"receiv "<<endl;
close(confd);
}
return 0;
}

客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include <stdlib.h>
#include "unistd.h"
#include <errno.h>
#include <string.h>
#include "stdio.h"
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <string>
using std::cin;
using std::cout;
using std::endl;
int main(){
int confd;
confd = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr;
bzero(&addr,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(4546);
inet_pton(AF_INET,"127.0.0.1",&addr.sin_addr);
connect(confd,(struct sockaddr*)&addr,sizeof(addr));
char buffer[300];
read(confd,buffer,300);
cout<<buffer<<endl;
return 0;
}