基于无连接(UDP协议)的服务器与客户端编程实例
来源:互联网 发布:怎样给淘宝客服评价 编辑:程序博客网 时间:2024/06/05 04:18
client.c
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/un.h>#include <sys/socket.h>#include <sys/unistd.h>#include <arpa/inet.h>#define PORT 8999#define DESIP "127.0.0.1"#define MAXSIZE 4096int main(int argc, char *argv[]){ int sockfd, addr_len; struct sockaddr_in des_addr; char sendmsg[MAXSIZE], recvmsg[MAXSIZE]; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket error"); return -1; } des_addr.sin_family = AF_INET; des_addr.sin_port = htons(PORT); des_addr.sin_addr.s_addr = inet_addr(DESIP); bzero(&(des_addr.sin_zero), 8); while (1) { memset(recvmsg, 0, MAXSIZE); memset(sendmsg, 0, MAXSIZE); printf("input:\n"); //gets(sendmsg); if (read(STDIN_FILENO,sendmsg,10) == -1) printf("input error"); //printf("sendmsg = %s\n",sendmsg); if (strcmp(sendmsg, "quit") == 0) { close(sockfd); printf("close connection\n"); return -1; } if (sendto(sockfd, sendmsg, strlen(sendmsg) + 1, 0, (struct sockaddr *)&des_addr, sizeof(struct sockaddr)) < 0) { perror("sendto"); continue; } printf("send ok...\n"); // while (1) {/* 所谓的非阻塞I/O */ // addr_len = sizeof(struct sockaddr); // if (recvfrom(sockfd, recvmsg, MAXSIZE, 0, (struct sockaddr *)&des_addr, &addr_len) < 0) { // continue; //} // printf("recv from %s : %s\n", inet_ntoa(des_addr.sin_addr), recvmsg); // break; // } } return 0; }
server.c
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/un.h>#include <sys/socket.h>#include <sys/unistd.h>#include <arpa/inet.h>#define PORT 8999#define MAXSIZE 4096int main(int argc, char *argv[]){ int sockfd, addr_len; struct sockaddr_in serv_addr, clnt_addr; char recvmsg[MAXSIZE], sendmsg[MAXSIZE]; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket error"); return -1; } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(PORT); serv_addr.sin_addr.s_addr = INADDR_ANY; bzero(&(serv_addr.sin_zero), 8); if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0) { perror("bind err"); return -1; } while(1) { memset(sendmsg, 0, MAXSIZE); memset(recvmsg, 0, MAXSIZE); addr_len = sizeof(struct sockaddr); /* 所谓的非阻塞I/O */ if (recvfrom(sockfd, recvmsg, MAXSIZE, 0, (struct sockaddr *)&clnt_addr, &addr_len) < 0) { perror("recv"); continue; } printf("begin to accept\n"); printf("recv from %s : %s\n", inet_ntoa(clnt_addr.sin_addr), recvmsg); // strcpy(sendmsg, "who are you ?? Let me cc!"); // sendto(sockfd, sendmsg, strlen(sendmsg) + 1, 0, (struct sockaddr *)&clnt_addr, addr_len); } return 0;}
- 基于无连接(UDP协议)的服务器与客户端编程实例
- 基于UDP协议的服务器/客户端程序
- 基于UDP协议的服务器/客户端程序
- 基于UDP协议的服务器/客户端
- 无连接的服务器编程(UDP)
- 基于 TCP (面向连接)和无连接UDP协议的 socket 套接字编程
- 网络编程(5)—— 基于Linux系统的UDP协议socket服务器和客户端
- 网络编程(6)—— 基于Windws系统的UDP协议socket服务器和客户端
- 简单的无连接的udp服务器和客户端
- 基于UDP协议下的客户端与服务器之间的通信
- UDP协议服务器、客户端使用实例Demo
- 基于UDP(面向无连接)的socket编程
- 基于UDP(面向无连接)的socket编程
- 基于UDP(面向无连接)的socket编程
- 【Linux网络编程】基于UDP的客户端/服务器程序
- UDP协议实现服务器与客户端的通信
- Windows Socket UDP协议(服务器与客户端)
- 与基于udp协议的tracker服务器进行交互
- 根文件系统制作
- 知识点积累(一)
- Apriori和FPTree
- 解释型语言和编译型语言的区别
- 大型网站架构演变和知识体系
- 基于无连接(UDP协议)的服务器与客户端编程实例
- Tomcat 中的 JSP: 自动编译
- Boyer-Moore算法
- 数字图像处理之灰度化
- Aho-Corasick算法学习
- 几道数组小题
- 身边小事
- 如何制作一个类似Tiny Wings的游戏 cocos2d-x-3.0alpha0
- hdu 3724 Encoded Barcodes