Socket UDP【简单聊天实例】
来源:互联网 发布:网络歌老情歌经典大全 编辑:程序博客网 时间:2024/06/10 06:41
server和client写在一起,双向通信。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <pthread.h>#include <unistd.h>using namespace std;#define MAXDATASIZE 1024#define IP "127.0.0.1"int send_head_port;int send_tail_port;int recv_tail_port;pthread_t rec_head_thread, rec_tail_thread, send_tail_thread;char my_ip[16];char server_head_ip[16];char server_tail_ip[16];void init_client();void *send_head_server(void *args);void *recv_tail_server(void *args);void *send_head_server(void *args){ int sockfd; struct sockaddr_in sin_addr; bzero(&sin_addr, sizeof(sin_addr)); sin_addr.sin_family = AF_INET; sin_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); sin_addr.sin_port = htons(send_tail_port); int sin_len = sizeof(sin_addr); if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { printf("Error opening socket\n"); exit(1); } while (1) { char msg[MAXDATASIZE]; scanf("%s", &msg); sendto(sockfd, msg, MAXDATASIZE, 0, (struct sockaddr *)&sin_addr, sin_len); }}void *recv_tail_server(void *args){ printf("rrrr\n"); int sockfd; char buft[MAXDATASIZE]; struct sockaddr_in cli_addr; bzero(&cli_addr, sizeof(cli_addr)); cli_addr.sin_family = AF_INET; cli_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); cli_addr.sin_port = htons(recv_tail_port); socklen_t cli_len = sizeof(cli_addr); if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { printf("error opening socket\n"); exit(1); } if (bind(sockfd, (struct sockaddr *)&cli_addr, sizeof(cli_addr)) == -1) { printf("error in bind\n"); exit(1); } while (1) { if (recvfrom(sockfd, buft, MAXDATASIZE, 0, (struct sockaddr *)&cli_addr, &cli_len) > 0) printf("RECV: %s\n", buft ); }}void init_client(){}int main(int argc, char *argv[])//recv_tail_port, send_tail_port{ if (argc < 3) { fprintf(stderr, "lack port\n"); exit(1); } recv_tail_port = atoi(argv[1]); send_tail_port = atoi(argv[2]); pthread_create(&rec_tail_thread, NULL, send_head_server, NULL); pthread_create(&send_tail_thread, NULL, recv_tail_server, NULL); pthread_join(rec_tail_thread, NULL); pthread_join(send_tail_thread, NULL); return 0;}/*main*/
0 0
- Socket UDP【简单聊天实例】
- Socket TCP【简单聊天实例】
- Socket UDP 简单聊天的实现
- 【java编程】Socket编程之UDP模拟简单聊天功能
- linux环境下基于udp socket简单聊天通信
- 简单UDP聊天模型
- 《黑马程序员》socket---udp聊天
- Socket一对一聊天实例
- socket 简单聊天示例
- socket 简单聊天程序
- UDP socket实例
- java socket udp实例
- Linux C Socket编程原理及tcp, udp简单实例
- UDP实现简单聊天程序
- 基于UDP简单聊天程序
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- JAVA系列课程讲座二:使用Socket通信实现简单聊天通信程序(UDP方式)
- Java-Socket之UDP聊天(线程)
- php 学习路线图
- UVa 10450 - World Cup Noise
- Java异常
- hdu1002
- java学习十七 逻辑运算符
- Socket UDP【简单聊天实例】
- 黑马程序员——Properties类和基础框架复习
- 一个简单的数据库操作类、封装了一些简单的操作
- C++面试题 深度剖析
- Demo② --> java 学习历程
- java学习十八 条件运算符
- 如何改变博客自定义模块字体设置
- java 多线程 之 Excutor
- JQuery的常见面试题