udp基本网络编程

来源:互联网 发布:耐克马拉松鞋矩阵 编辑:程序博客网 时间:2024/05/23 21:40

udp传输数据不需要像tcp一样建立连接,只需要知道客户端和服务器的ip地址即可。首先是服务器端,初始化套接字结构地址,创建套接字,绑定端口,循环监听。

#include <stdio.h>#include <stdlib.h>// 基本头文件#include <sys/socket.h>//socket#include <netinet/in.h>//struct sockaddr_in#include <string.h>//strlen()函数int main(int argc,char ** argv){    int sockfd,n;    char rcv[100],send[100];//接受和发送数据的数组    struct sockaddr_in server,client;//服务器和客户端结构地址    socklen_t len;    bzero(&server,sizeof(server));//初始化服务器结构地址    server.sin_family = AF_INET;//ipv4版本    server.sin_port = htons(4399);//端口号    server.sin_addr.s_addr = htonl(INADDR_ANY);//INADDR_ANY是本机地址    sockfd = socket(AF_INET,SOCK_DGRAM,0);//创建套接字    bind(sockfd,(struct sockaddr *)&server,sizeof(server));//绑定端口    for(;;){        len = sizeof(client);        n = recvfrom(sockfd,rcv,100,0,(struct sockaddr*)&client,&len);//接受数据并获得客户端地址        rcv[n] = '0';        printf("%s\n",rcv);        sendto(sockfd,rcv,n,0,(struct sockaddr*)&client,len);//发送数据    }}

客户端,初始化套接字结构地址,指定主机ip,循环发送接收数据

#include <stdio.h>#include <stdlib.h>// 基本头文件#include <sys/socket.h>//socket#include <string.h>//strlen()函数#include <netinet/in.h>//struct sockaddr_in#include <unistd.h>#include <arpa/inet.h>//inet_pton()函数int main(int argc,char ** argv){    int sockfd,n;    struct sockaddr_in server;//服务器结构地址    char rcv[100],send[100];//接受和发送数据的数组    if(argc!=2){//输入 ip        printf("ip\n");        return 0;    }    bzero(&server,sizeof(server));//初始化sockaddr_in    server.sin_family = AF_INET;//ipv4版本    server.sin_port = htons(4399);//端口号    inet_pton(AF_INET,argv[1],&server.sin_addr.s_addr);//将从键盘传入的IP参数赋值给&server.sin_addr.s_addr    if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0){//创建socket        printf("socket error\n");        return 0;    }    while(1){        fgets(send,100,stdin);//从键盘读入字符         sendto(sockfd,send,strlen(send),0,(struct sockaddr*)&server,sizeof(server));//发送数据        n = recvfrom(sockfd,rcv,100,0,NULL,NULL);//接收数据        rcv[n] = '\0';        printf("%s\n",rcv);    }}

功能:客户端将用户输入的数据传送到服务器,服务器再将数据返回到客户端。
运行结果
这里写图片描述

原创粉丝点击