udp基本网络编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fyq201749/article/details/75216097

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);
    }
}

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

猜你喜欢

转载自blog.csdn.net/fyq201749/article/details/75216097
今日推荐