在unix下编写c++ 的socket
服务端
服务端
tcp_server.cc
// -----------------------------------------server program---------------------------
#include < iostream >
using namespace std;
#include < sys / socket.h >
#include < unistd.h >
#include < netinet / in .h >
#include < arpa / inet.h >
#include < signal.h >
#include < sys / wait.h >
/*struct in_addr{
in_addr_t s_addr;
};
struct sockaddr_in{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
};*/
// ---------read/write function----------
void req_proc( int s, char * );
void fn( int sig) {
int pid = wait(NULL);
cout << "child " << pid << " clear" << endl;
signal(SIGCHLD,fn);
}
int main()
{
if(signal(SIGCHLD,fn)==SIG_ERR){
cout << "capture signal error" << endl;
exit(0);
}
//1,socket(),create socket.
int fd = socket(AF_INET,SOCK_STREAM,0);
// -----------------------------------------server program---------------------------
#include < iostream >
using namespace std;
#include < sys / socket.h >
#include < unistd.h >
#include < netinet / in .h >
#include < arpa / inet.h >
#include < signal.h >
#include < sys / wait.h >
/*struct in_addr{
in_addr_t s_addr;
};
struct sockaddr_in{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
};*/
// ---------read/write function----------
void req_proc( int s, char * );
void fn( int sig) {
int pid = wait(NULL);
cout << "child " << pid << " clear" << endl;
signal(SIGCHLD,fn);
}
int main()
{
if(signal(SIGCHLD,fn)==SIG_ERR){
cout << "capture signal error" << endl;
exit(0);
}
//1,socket(),create socket.
int fd = socket(AF_INET,SOCK_STREAM,0);