问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 UDP socket 简单客户端 编程,急

发布网友 发布时间:2022-04-27 07:06

我来回答

2个回答

热心网友 时间:2022-06-28 05:59

提一下,你那个地址不好用,换成了127.0.0.1,端口可以用,完全按照要求写的,编译没错误,调试通过:
gcc server.c -o server
gcc client.c -o client
打开2个控制台:一个运行 ./server 另一个运行 ./client
server.c:
========================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>

#define BUFFERSIZE 1024
typedef struct sockaddr SA;

int main(void)
{
char buf[BUFFERSIZE];
struct sockaddr_in addr_s;
struct sockaddr_in addr_c;
int sockfd;
socklen_t length;
int i;

if((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket fail");
return -1;
}

memset(&addr_s,0,sizeof(addr_s));
addr_s.sin_family = AF_INET;
addr_s.sin_addr.s_addr = inet_addr("127.0.0.1");
addr_s.sin_port = htons(31180);

if(bind(sockfd,(SA *)&addr_s,sizeof(addr_s)) == -1)
{
perror("bind fail");
return -1;
}

length = sizeof(addr_c);

memset(buf,'\0',sizeof(buf));
if(recvfrom(sockfd,buf,sizeof(buf),0
,(SA *)&addr_c,&length) == -1)
{
perror("recvfrom fail");
}
printf("recvfrom client:%s\n",buf);
sendto(sockfd,buf,sizeof(buf),0,(SA *)&addr_c,sizeof(addr_c));

close(sockfd);
}

====================================
client.c:
====================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>

#define BUFFERSIZE 1024
typedef struct sockaddr SA;

int main(void)
{
int sockfd;
char buf[BUFFERSIZE];
struct sockaddr_in addr_s;

if((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket fail");
return -1;
}

memset(&addr_s,0,sizeof(addr_s));
addr_s.sin_family = AF_INET;
addr_s.sin_addr.s_addr = inet_addr("127.0.0.1");
addr_s.sin_port = htons(31180);

memset(buf,'\0',sizeof(buf));
sprintf(buf,"abcde");
if(sendto(sockfd,buf,sizeof(buf)
,0,(SA *)&addr_s,sizeof(addr_s)) < 0)
{
perror("sendto fail");
}
memset(buf,'\0',sizeof(buf));
recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL);
printf("recvfrom server:%s\n",buf);

close(sockfd);
}追问谢了,能稍微改一下换成输入一段字符而不是事先设好的字符么。

追答client.c:
====================================
#include
#include
#include
#include
#include
#include
#include

#define BUFFERSIZE 1024
typedef struct sockaddr SA;

int main(void)
{
int sockfd;
char buf[BUFFERSIZE];
struct sockaddr_in addr_s;

if((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket fail");
return -1;
}

memset(&addr_s,0,sizeof(addr_s));
addr_s.sin_family = AF_INET;
addr_s.sin_addr.s_addr = inet_addr("127.0.0.1");
addr_s.sin_port = htons(31180);

memset(buf,'\0',sizeof(buf));
//这里加2句,去掉原来的那一句就可以了
printf("input the message to send:\n");
scanf("%s",buf);
if(sendto(sockfd,buf,sizeof(buf)
,0,(SA *)&addr_s,sizeof(addr_s)) < 0)
{
perror("sendto fail");
}
memset(buf,'\0',sizeof(buf));
recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL);
printf("recvfrom server:%s\n",buf);

close(sockfd);
}

热心网友 时间:2022-06-28 06:00

找我吧,这个简单追问可以啊,程序...........

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 udp socket 关于在一个程序里实现发送和接收 c# udp socket 怎样向远程端口请求数据 socket UDP问题 UDP中将struct skb_buff作为缓存区 具体如何使用 非典在我国传播的根源? 2003年非典是别的国家传到中国的吗? 非典是怎么传入我国的 给宝贝(女孩)起名:因为我宝贝的来临,即给我们带来惊喜又带来好运。跪求高人给起个响亮的名字。 起名字,求大师给我闺女起个名字! 甘炜琪这个名字打多少分 梁炜琪这个名字怎么样 戴炜琪 ,这个名字好吗? 女孩取名为梁炜琪如何 梁炜琪的名字好吗? 江炜琪,女孩五行缺火,这个名字好吗? 潘炜琪名字打分是多少 杨炜琪名字好吗出生农历2015年2月15日11.30分左右 男孩子、2013年2月25日19:40出生的,名字谢炜琪,请打分!谢谢! 芳香化合物A、B互为同分异构体,B的结构简式为.A经①②两步反应得到C、D和E.B经①②两步反应得E、F和H AB=E,能说A,B互相是对方的逆矩阵吗??? c# socket(udp) 与一组芯片的通讯,发送指令(字符串过去就返回一组字符信息)。哪位大侠做过 游戏账号在哪个app上交易比较好? C# Socket UDP模式,Send方法一定能成功吗? 卖账号用哪个app好 如何用C++Builder控件实现UDP通信 关于c#的socket分包和组包的问题 MFC中UDP建立连接后收不到数据 《原神》账号出售平台哪个好? c#socket在使用TCP或UDP异步通信的时候SocketAsyncEventArgs和一般的Begin有何区别 docker影响socket性能 能交易传奇账号的APP叫什么 用udp来传送文件,发送端sendto加上了 sleep(100)。 接受端recvfrom 用for循环, 爱找游游戏交易网靠谱吗 c#之UDP协议的异步通信怎么做 delphi udp通讯怎么会refuse 什么叫源文件夹和 目标文件夹 目标文件夹和源文件夹相同 我的文档里的目标文件夹在哪 我的文档的目标文件夹是本地磁盘(D:)吗? 安装软件时所谓的目标文件夹是什么回事啊?一定要安装到C盘吗?