导航:首页 > 文件教程 > cudp文件传输

cudp文件传输

发布时间:2025-10-17 08:06:08

『壹』 C 语言socket 的send数据太大,最大能发送多少如何分批发送

如果你SOCKET发的数据报,比如UDP协议, 那么是有最大可发送大小.

这可以用下面这样getsockopt取得最大数据报大小.
----------------------------------------
SOCKET s;
int iSize, iVal, ret;

.....
iSize = sizeof(iVal);
ret = getsockopt(s, SOL_SOCKET, SO_MAX_MSG_SIZE, (char *)&iVal, &iSize);

//-----------------------------------------
如果是TCP,则不需要这样做.

你send返回的字节数有801770个字节(是字节数吧!),和send里的规定length一样大,这可以表明你成功的将这些数据提交底层TCP协议栈去发送。

接收方要是处理成确的,是可以正确无误的收到这些数据的。

//---------------------------------------------

TCP 提供的是可靠的数据流服务 , 这意味着, 接收方,并不需要关心也不应该假定发送方调用了多少次SEND, 它只需要管的是通过若干次RECV把数据从协议栈的缓冲区读取出来。
TCP不必担心丢数据,但发送的时候,SEND要注意处理返回值,如果是阻塞方式,太多的数据会被阻塞, 如果是非阻方式,返回缓冲区满错,然后延时重发。

『贰』 能否给我一个用纯C编写的UDP发送和接收的程序

UDP的,你看下

1.服务器端实现

程序在收到客户端发送来的消息后,给客户端发送消息,提示客户端收到了该消息

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int sock, length, fromlen, n;
struct sockaddr_in server;
struct sockaddr_in from;
char buf[1024];

//要求执行是输入端口信息
if (argc!= 2) {
printf( "Usage: %s port_num\n",argv[0]);
return 1;
}

//创建通信所需的套接字,并与地址和端口信息帮定
sock=socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0){
perror("cannot create communicating socket");
return 1;
}

length = sizeof(server);
bzero(&server,length);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons(atoi(argv[1]));

if (bind(sock,(struct sockaddr *)&server,length)<0){
perror("cannot bind the socket");
close(sock);
return 1;
}

fromlen = sizeof(struct sockaddr_in);

//读取客户端发送来的信息,显示后,发回相关信息给客户端
while (1) {
n = recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr *)&from,&fromlen);
if (n < 0) {
perror("cannot receive date from client");
break;
}
write(STDOUT_FILENO,"server: Received a datagram: ",29);
write(STDOUT_FILENO,buf,n);

n = sendto(sock,"send message to client\n",22,
0,(struct sockaddr *)&from,fromlen);
if (n < 0) {
perror("cannot send data to the client");
break;
}
}

close(sock);
return 0;
}

2.客户端实现

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int sock, length, n;
struct sockaddr_in server, from;
struct hostent *hp;
char buffer[256];

//判断输入参数是否符合要求
if (argc != 3) {
printf("Usage: %s server_ip port_num\n",argv[0]);
return 1;
}

//创建通信套接字
sock= socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("cannot create communicating socket");
return 1;
}

server.sin_family = AF_INET;
hp = gethostbyname(argv[1]);
if (hp==0) {
perror("cannot get the server ip address");
return 1;
}

b((char *)hp->h_addr,
(char *)&server.sin_addr,
hp->h_length);

server.sin_port = htons(atoi(argv[2]));
length=sizeof(struct sockaddr_in);

printf("(client) enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);

//发送数据给指定服务器
n=sendto(sock,buffer,strlen(buffer),0,&server,length);
if (n < 0){
perror("cannot get message from the client");
return 1;
}

//从服务器中接受数据
bzero(buffer,256);
n = recvfrom(sock,buffer,256,0,&from, &length);
if (n < 0) {
perror("cannot send message to the server");
return 1;
}

printf("client got message : %s\n",buffer);
close(sock);
return 0;
}

『叁』 TCP与UDP应用的例子有哪些

1、TCP应用

(1)FTP:文件传输协议;

(2)SSH:安全登录、文件传送(SCP)和端口重定向;

(3)Telnet:不安全的文本传送;

(4)SMTP:简单邮件传输协议Simple Mail Transfer Protocol (E-mail);

(5)HTTP:超文本传送协议 (WWW);

2、UDP应用

(1)流媒体

采用TCP,一旦发生丢包,TCP会将后续包缓存起来,等前面的包重传并接收到后再继续发送,延迟会越来越大。基于UDP的协议如WebRTC是极佳的选择。

(2)实时游戏

对实时要求较为严格的情况下,采用自定义的可靠UDP协议,比如Enet、RakNet(用户有sony online game、minecraft)等,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。

采用UDP的经典游戏如FPS游戏Quake、CS,著名的游戏引擎Unity3D采用的也是RakNet。

(3)物联网

2014年google旗下的Nest建立Thread Group,推出了物联网通信协议Thread,完善物联网通信。

全球将近50%的人都在使用互联网,人们不断的追求更快、更好的服务,一切都在变化,在越来越多的领域,UDP将会抢占TCP的主导地位。

(4)QQ 文件传输、QQ语音、QQ视频

对于网络通讯质量要求不高的情况下,要求网络通讯速度能尽量快捷方便,就可以使用UDP技术。

阅读全文

与cudp文件传输相关的资料

热点内容
找不到应用的文件 浏览:679
dnf台服地图代码大全 浏览:118
aix系统文件查找某个字符 浏览:624
编程猫id是什么 浏览:69
Linux下读取很大的文件 浏览:693
WiFi密码怎么分享 浏览:778
为某学校设计一个网络建设方案 浏览:76
如何把c程序编程软件 浏览:853
cudp文件传输 浏览:452
mac文件保存找不到桌面 浏览:614
数控编程软件使用最多是哪个 浏览:324
root版本 浏览:61
html表格颜色代码 浏览:805
java双目运算符 浏览:159
qq古代唯美女生头像 浏览:893
app数据库服务器配置 浏览:938
如何在电视上安装米家app 浏览:991
二手物品哪个网站好 浏览:943
jdk转换时找不到文件 浏览:345
在电脑上怎样删除文件夹 浏览:708

友情链接