【UDP通讯】使用c语言UDP互发_c语言通过udp发固定buf给服务器

#include<sys/socket.h>
#include<arpa/inet.h>

int main()
{
//创建socket对象
int sockfd=socket(AF_INET,SOCK_DGRAM,0);

//创建网络通信对象
struct sockaddr_in addr;
addr.sin_family =AF_INET;
addr.sin_port =htons(1324);
addr.sin_addr.s_addr=inet\_addr("127.0.0.1");

//绑定socket对象与通信链接
int ret =bind(sockfd,(struct sockaddr\*)&addr,sizeof(addr));
if(0>ret)
{
    printf("bind\n");
    return -1;

}
struct sockaddr_in cli;
socklen_t len=sizeof(cli);// 注意这个len

while(1)
{
    char buf =0;
    recvfrom(sockfd,&buf,sizeof(buf),0,(struct sockaddr\*)&cli,&len);//这里输入客户端的地址,已经长度的\*\*地址\*\*
    printf("recv num =%hhd\n",buf);

    buf =66;
    sendto(sockfd,&buf,sizeof(buf),0,(struct sockaddr\*)&cli,len);//这里输入客户端的地址,已经长度的\*\*变量\*\*

}
close(sockfd);

}


UDP客户端:



//socket udp 客户端
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>

int main()
{
//创建socket对象
int sockfd=socket(AF_INET,SOCK_DGRAM,0);

//创建网络通信对象
struct sockaddr_in addr;
addr.sin_family =AF_INET;
addr.sin_port =htons(1324);
addr.sin_addr.s_addr = inet\_addr("192.168.0.143");

while(1)
{
    printf("请输入一个数字:");
    char buf=0;
    scanf("%hhd",&buf);
    sendto(sockfd,&buf,
    sizeof(buf),0,(struct sockaddr\*)&addr,sizeof(addr));

    socklen_t len=sizeof(addr);
    recvfrom(sockfd,&buf,sizeof(buf),0,(struct sockaddr\*)&addr,&len);

    if(66 ==buf)
    {
        printf(" server 成功接受\n");
    }
    else
    {
        printf("server 数据丢失\n");
    }

}
close(sockfd);

}


TCP/IP协议叫做传输控制/网际协议,又叫做网络通信协议。实际上,它包括上百个功能的协议。


套接字(socket):在网络中用来描述计算机中不同程序与其他计算程序的通信方式。


套接字分为三类;


流式socket(SOCK\_STREAM):提供可靠,面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。


数据报socket(SOCK\_DGRAM):数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,无序的,并且不保证可靠,无差错的。它使用的数据报协议是UDP。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值