源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言网络编程-标准步骤(比较简单)

  • 时间:2022-01-31 07:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言网络编程-标准步骤(比较简单)
c语言网络编程-标准步骤,真的很简单啊 server.c
[u]复制代码[/u] 代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netdb.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #define PORT 4444 #define BACKLOG 5 int main(int argc, char *argv[]) {     int sock_fd, new_fd;     struct sockaddr_in server_addr, client_addr;     int sin_size;     int nbytes;     int on = 1;     char buffer[1024];     if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {         perror("socket");         exit(1);     }     setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));     memset(&server_addr, 0, sizeof(struct sockaddr_in));     server_addr.sin_family      = AF_INET;     server_addr.sin_addr.s_addr = htonl(INADDR_ANY);     server_addr.sin_port        = htons(PORT);     if (bind(sock_fd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1) {         perror("bind");         exit(1);     }     if (listen(sock_fd, BACKLOG) == -1) {         perror("listen");         exit(1);     }     printf("Server start... \n");     while (1) {         sin_size = sizeof(struct sockaddr_in);         if ((new_fd = accept(sock_fd, (struct sockaddr *)(&client_addr), &sin_size)) == -1) {             perror("accept");             exit(1);         }         printf("Server get connection from %s\n", inet_ntoa(client_addr.sin_addr));         if ((nbytes = read(new_fd, buffer, 1024)) == -1) {             perror("read");             exit(1);         }         buffer[nbytes] = '\0';         printf("Server received: %s\n", buffer);         close(new_fd);     }     return 0; }
client.c
[u]复制代码[/u] 代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4444 int main(int argc, char *argv[]) {     int sock_fd;     struct sockaddr_in server_addr;     struct hostent *host;     char buffer[1024];     if (argc < 2) {         perror("Need hostname");         exit(1);     }     if ((host = gethostbyname(argv[1])) == NULL) {         perror("gethostbyname");         exit(1);     }     if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {         perror("socket");         exit(1);     }     memset(&server_addr, 0, sizeof(struct sockaddr_in));     server_addr.sin_family  = AF_INET;     server_addr.sin_port    = htons(PORT);     server_addr.sin_addr    = *((struct in_addr *)host->h_addr);     if (connect(sock_fd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1) {         perror("connect");         exit(1);     }     printf("Please input something:\n");     fgets(buffer, 1024, stdin);     write(sock_fd, buffer, strlen(buffer));     close(sock_fd);     return 0; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部