導航:首頁 > 文件教程 > 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文件傳輸相關的資料

熱點內容
怎麼看三國志13版本 瀏覽:85
找不到應用的文件 瀏覽: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

友情鏈接