网络编程

来源:互联网 发布:mac php集成环境工具 编辑:程序博客网 时间:2024/06/07 00:42
/*
1.创建socket2.命名套接字,绑定本地的ip地址和端口3.监听本地套接字4.接收连接*/
#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>#include <stdio.h>#include <string.h>#define PORT 9999int main(){//1.创建socketint listen_socket = socket(AF_INET, SOCKET_STREAM,0);if(listen_socket == -1){perror("socket");return -1;}//2.命名套接字,绑定本地的ip地址和端口#if 0struct sockaddr_in{short int sin_family;         //Internet地址族unsigned short int sin_port;  //端口号struct in_addr sin_addr;      //IP地址 unsigned char sin_zero[8];    //填0 };struct in_addr{unsigned long s_addr;};#endifstruct socketaddr_in addr;memset(&addr,0,sizeof(addr));addr.sin_family = AF_INET;       //设置地址族addr.sin_port   = htons(PORT);   //设置本地端口addr.sin_addr.s_addr = htonl(INADDR_ANY);  //使用本地的任意IP地址int  ret = bind(listen_socket,(struct sockaddr *)&addr,sizeof(addr));if(ret == -1){perror("blind");return -1;}//3.监听本地套接字ret = listen(listen_socket,5);if(ret == -1){perror("listen");return -1;}printf("等待 客户端连接......\n");//4.接收连接//监听套接字不能用来与客户端进行通信,他的职责是监听客户端的连接//accept处理客户端的连接,如果接受成功,会返回一个新的套接字,用来与客户端进行通信//accept的第三个参数,是一个传入传出参数struct sockaddr_in client_addr;//用来保存客户端的ip和端口信息int len = sizeof(client_addr);int client_socket = accept(listen_socket,(struct sockaddr *)&client_addr,&len);if(client_socket == -1){perror("accept");}printf("成功接收一个客户端:%s\n",inet_ntoa(client_addr.sin_addr));char buf[1024];while(1){int ret = read(client_socket,buf,1023);buf[ret] = '\0';printf("%s\n",buf);}return 0;}

原创粉丝点击