自己既能发送数据也能接收数据,既是服务端也是客户端
服务端代码:
#include<unistd.h>
#include<sys/stat.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<fcntl.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<signal.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/socket.h>
/*
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
*/
//信号要出发的回调函数
void handle(int num){
printf("recv num:%d,退出\n",num);
exit(0);
}
int main(){
int sockfd=0;
signal(SIGUSR1,handle);//捕获SIGUSR1信号,并调用handle函数
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1){
perror("fun socket\n");
exit(0);
}
struct sockaddr_in serveraddr;
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(8001);
serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
//serveraddr.sin_addr.s_addr=INADDR_ANY;//绑定本机的任意地址
int optval=1;
if(setsockopt(sockfd, SOL_SOCKET,SO_REUSEADDR,&optval, sizeof(optval))<0)