UDP网络编程例程1
来源:互联网 发布:mysql count * 编辑:程序博客网 时间:2024/04/29 04:30
服务器端:server_udp.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define SERVPORT 3333 //服务器监听端口号
#define BACKLOG 10 //最大同时连接请求数
/*
//用于接收数据的线程
//形参:argv为一个socked句柄
void * threadFunc(void * argv)
{
int csocket;
int ret;
char buf[512];
int len = sizeof(adr_send); //用于保存adr_clnt大小
csocket = *(int*)argv;
while(1)
{
//recv(csocket, buf, 512, 0);
ret = recvfrom(csocket, buf, sizeof(buf), 0, (struct sockaddr*)&adr_send, &len );; //接收客户端传来的数据
if(ret == -1){
perror("recvfrom failed/n");
exit(1);
}
buf[ret] = '/0'; //最后1位设置为结束符
printf("接收:%s", buf);
if( strncmp(buf, "stop", 4) == 0){ //若接收到stop,退出
printf("结束.../n");
break;
}
}
return NULL;
}
*/
int main()
{
pthread_t pid; //定义一个线程id
int sockfd; //定义一个socked句柄
char buf[256]; //接收数据缓存区
struct sockaddr_in adr_inet; //本地socket信息
struct sockaddr_in adr_clnt; //客户端socket信息
int ret; //用于保存返回值
int len = sizeof(adr_clnt); //用于保存adr_clnt大小
printf("等待客户端.../n");
//初始化本地socket信息
adr_inet.sin_family = AF_INET; //IPv4协议
adr_inet.sin_port = htons(SERVPORT); //端口号,使用htons函数转换
adr_inet.sin_addr.s_addr = INADDR_ANY; //IP地址为0.0.0.0
bzero(&(adr_inet.sin_zero), 8); //用bzero函数将sin_zero置零
sockfd = socket(AF_INET, SOCK_DGRAM, 0); //建立数据报socket(即UDP)
if(sockfd == -1){
perror("socked failed/n");
exit(1);
}
ret = bind(sockfd, (struct sockaddr*)&adr_inet, sizeof(adr_inet)); //绑定socket
if(ret == -1){
perror("bind failed/n");
exit(1);
}
// pthread_create(&pid, NULL, threadFunc, (void *)&socket);
while(1){
ret = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr*)&adr_clnt, &len ); //接收客户端传来的数据
if(ret == -1){
perror("recvfrom failed/n");
exit(1);
}
buf[ret] = '/0'; //最后1位设置为结束符
printf("接收:%s", buf);
if( strncmp(buf, "stop", 4) == 0){ //若接收到stop,退出
printf("结束.../n");
break;
}
}
close(sockfd); //关闭socked
return 0;
}
客户端:client_udp.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#define SERVPORT 3333
int main()
{
int sockfd;
char buf[80];
struct sockaddr_in adr_serv; //服务器端socket信息
int ret;
printf("连接服务器端.../n");
//初始化服务器socket信息
adr_serv.sin_family = AF_INET;
adr_serv.sin_port = htons(SERVPORT);
adr_serv.sin_addr.s_addr = INADDR_ANY;
bzero(&(adr_serv.sin_zero), 8);
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sockfd == -1){
perror("socket failed/n");
exit(1);
}
printf("发送数据.../n");
while(1){
//scanf("%s", buf);
fgets(buf, 80, stdin);
ret = sendto(sockfd, buf, sizeof(buf), 0, (struct sockaddr*)&adr_serv, sizeof(adr_serv) ); //发送数据到服务器端
if(ret < 0){
perror("sendto failed/n");
exit(1);
}
if(strncmp(buf, "stop", 4) == 0){
printf("结束发送.../n");
break;
}
}
close(sockfd);
return 0;
}
- UDP网络编程例程1
- java例程练习(网络编程[简单UDP通信试验])
- 网络编程1--UDP
- Linux 网络编程 简单例程1
- java网络编程(1)-udp编程
- 基于linux 的socket UDP编程例程
- 黑马程序员_ 网络编程(1) UDP
- UDP传输----java网络编程(1)
- 网络编程 UDP
- UDP网络编程
- 网络编程UDP
- LINUX UDP网络编程
- java udp网络编程
- UDP网络编程
- java 网络编程 UDP
- 网络编程--UDP协议
- 网络编程之udp
- TCP网络编程&&UDP
- sift算法学习
- linux中查看进程
- 交流分享
- 收藏 彩色转灰度的舍入问题
- 通用网关接口( Common Gateway Interface
- UDP网络编程例程1
- windows下配置apache php mysql
- FastDFS基本结构
- 忘记了Mysql的root用户的密码,怎么办?
- 纸上得来终觉浅
- linux杀死进程
- WCF 学习总结8 –- WCF 事务处理
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- IAR5.40 固定变量地址的方法