网站大量收购独家精品文档,联系QQ:2885784924

C语言用UDP 实现局域网聊天程序源码.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include stdio.h #include stdlib.h #include string.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include unistd.h #include signal.h #define CLIENT_LOGIN 100 #define CLIENT_CHAT 200 #define CLIENT_QUIT 300 #define SERVER_CHAT 400 #define SERVER_QUIT 500 struct node { char name[20]; struct sockaddr_in client_addr; struct node *next; }; struct message { long type; char name[20]; char mtext[512]; }; struct node *create_list(void); void insert_list(struct node *, char *, struct sockaddr_in *); void delete_list(struct node *, char *); void recv_message(int , struct node *); void send_message(int , struct sockaddr_in *, pid_t ); void client_login(int , struct node *, struct message *, struct sockaddr_in *); void client_chat(int , struct node *, struct message *); void client_quit(int , struct node *, struct message *); void server_chat(int , struct node *, struct message *); void server_quit(int , struct node *, struct message *); void brocast_msg(int , struct node *, struct message *); void father_func(int sig_no) { return ; } int main(int argc, const char *argv[]) { int socket_fd; pid_t pid; struct sockaddr_in server_addr; struct node *head; if (argc 3) { fprintf(stderr, usages : %s ip port\n, argv[0]); exit(-1); } if ((socket_fd = socket(AF_INET, SOCK_DGRAM, 0)) 0) { perror(failed to create socket); exit(-1); } head = create_list(); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(atoi(argv[2])); server_addr.sin_addr.s_addr = inet_addr(argv[1]); if (bind(socket_fd, (struct sockaddr *)server_addr, sizeof(server_addr)) 0) { perror(failed to bind); exit(-1); } if ((pid = fork()) 0) //创建子经常 { perror(failed to fork pid); exit(-1); } if (pid == 0) recv_message(socket_fd, head); else send_message(socket_fd, server

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档