c语言文件传输 C语言中如何将结果传递给另一个C语言文件?

c\u8bed\u8a00socket\u6587\u4ef6\u4f20\u8f93\u95ee\u9898

\u670d\u52a1\u5668\u7aef\uff08\u53d1\u9001\u6587\u4ef6\uff09\uff1a\u9996\u5148\u6253\u5f00\u6587\u4ef6\u3010fopen\u3011\uff0c\u7528rb\u65b9\u5f0f\u6253\u5f00\uff0c\u65e2\u53ef\u4ee5\u53d1\u9001\u6587\u672c\u6587\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u53d1\u9001\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5728\u65e0\u9519\u65f6\u521d\u59cb\u5316\u5957\u63a5\u5b57socket\uff0c\u5373\u521d\u59cb\u5316socket\u5e93\u3010WSAStartup\u3011\uff0c\u5206\u914dsocket\u3010socket\u3011\uff0c\u586b\u5145\u670d\u52a1\u5668\u7684\u5730\u5740\uff0c\u5373\u586b\u5145sockaddr_in\u7ed3\u6784\uff0c\u7136\u540e\u8fdb\u884c\u7ed1\u5b9a\u3010bind\u3011\uff0c\u8bbe\u7f6e\u5957\u63a5\u5b57\u4e3a\u76d1\u542c\u5957\u63a5\u5b57\u3010listen\u3011\uff0c\u63a5\u6536\u8fde\u63a5\u3010accept\u3011\uff0c\u81f3\u6b64\u670d\u52a1\u5668\u963b\u585e\uff0c\u7b49\u5f85\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u3002
\u5ba2\u6237\u7aef\uff08\u63a5\u6536\u6587\u4ef6\uff09\uff1a\u9996\u5148\u6253\u5f00\u6587\u4ef6\u3010fopen\u3011\uff0c\u7528wb\u65b9\u5f0f\u6253\u5f00\uff0c\u5728\u65e0\u9519\u65f6\u521d\u59cb\u5316\u5957\u63a5\u5b57socket\uff0c\u5373\u521d\u59cb\u5316socket\u5e93\u3010WSAStartup\u3011\uff0c\u5206\u914dsocket\u3010socket\u3011\uff0c\u586b\u5145\u5ba2\u6237\u7aef\u7684\u5730\u5740\uff0c\u5373\u586b\u5145sockaddr_in\u7ed3\u6784\uff0c\u7136\u540e\u8fdb\u884c\u7ed1\u5b9a\u3010bind\u3011\uff0c\u518d\u586b\u5145\u670d\u52a1\u5668\u7684\u5730\u5740\u7ed3\u6784\uff0c\u7136\u540e\u8c03\u7528\u3010connect\u3011\u8fdb\u884c\u8fde\u63a5\uff0c\u5f53\u8fde\u63a5\u6210\u529f\u540e\uff0c\u7b2c\u4e00\u9636\u6bb5\u7684\u5de5\u4f5c\u4fbf\u7ed3\u675f\u4e86\u3002
\u7b2c\u4e8c\u9636\u6bb5\uff0c\u53d1\u9001\u6587\u4ef6\u3002
\u670d\u52a1\u5668\u7aef\uff1a\u4f7f\u7528\u5faa\u73afwhile\uff0c\u7ed3\u675f\u6761\u4ef6\u662f\uff08\uff01feof\uff08fp\uff09\uff09\uff0cfp\u662f\u6587\u4ef6\u6307\u9488\uff0cfeof\u68c0\u6d4b\u5f53\u524d\u7684\u6587\u4ef6\u8bfb\u53d6\u6307\u9488\u662f\u5426\u5230\u8fbe\u6587\u4ef6\u5c3e\u90e8\uff0c\u82e5\u5230\u8fbe\u4e86\u5c31\u8fd4\u56de\u771f\uff0c\u5426\u5219\u8fd4\u56de\u5047\u3002\u7136\u540e\u5728\u5faa\u73af\u5185\u90e8\u4f9d\u6b21\u8c03\u7528\u3010fread\u3011\u3001\u3010send\u3011\u8fdb\u884c\u53d1\u9001\u3002\u8fd9\u91cc\u6709\u4e00\u4e2a\u95ee\u9898\u9700\u8981\u6ce8\u610f\uff0c\u8c03\u7528fread\u7684\u65f6\u5019\u6709\u4e24\u4e2a\u53c2\u6570\u662f\u8981\u6bcf\u6b21\u8bfb\u591a\u5c11\u5b57\u8282\u548c\u8bfb\u591a\u5c11\u6b21\uff0c\u5c06\u7b2c\u4e00\u4e2a\u8bbe\u7f6e\u4e3a1\uff0c\u5c06\u7b2c\u4e8c\u4e2a\u8bbe\u7f6e\u4e3a\u7f13\u51b2\u533a\u7684\u5927\u5c0f\uff0c\u7528\u4e00\u4e2a\u53d8\u91cf\u8bb0\u5f55\u5b9e\u9645\u8bfb\u5230\u591a\u5c11\u5b57\u8282\uff0c\u5373\u3010fread\u3011\u7684\u8fd4\u56de\u503c\uff0c\u7136\u540e\u5c06\u5176\u4f20\u9012\u7ed9\u3010send\u3011\uff0c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u53d1\u9001\u6587\u4ef6\u4e86\uff0c\u5728\u53d1\u9001\u5b8c\u6210\u540e\u65ad\u5f00\u8fde\u63a5\u3010closesocket\u3011\uff0c\u5173\u95ed\u6587\u4ef6\u3010fclose\u3011\u3002
\u5ba2\u6237\u7aef\uff1a\u4f7f\u7528while\u6b7b\u5faa\u73af\uff0c\u8c03\u7528\u3010recv\u3011\u63a5\u6536\u6587\u4ef6\uff0c\u3010fwrite\u3011\u5199\u5165\u6587\u4ef6\uff0c\u8fd9\u91cc\u4e5f\u6709\u4e2a\u548c\u4e0a\u9762\u7c7b\u4f3c\u7684\u95ee\u9898\uff0c\u5c31\u662f\u8981\u5c06recv\u7684\u8fd4\u56de\u503c\u4f20\u9012\u7ed9fwrite\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\uff0c\u5373\u53d7\u5230\u4e86\u591a\u5c11\u5b57\u8282\uff0c\u5c31\u5411\u6587\u4ef6\u4e2d\u5199\u591a\u5c11\u5b57\u8282\u3002\u5f53recv\u8fd4\u56de\u503c\u4e3a0\u65f6\uff08\u8fde\u63a5\u65ad\u5f00\u65f6\uff09\u9000\u51fa\u5faa\u73af\uff0c\u3010closesocket\u3011\u5173\u95ed\u5957\u63a5\u5b57\uff0c\u8c03\u7528\u3010fclose\u3011\u5173\u95ed\u6587\u4ef6\u3002

\u591a\u6587\u4ef6\u4e4b\u95f4\uff0c\u4e00\u822c\u5f88\u5c11\u6709\u5355\u4e2a\u53c2\u6570\u4f20\u9012\uff0c\u90a3\u4e2a\u4ea4\u96c6\u592a\u5927\uff0c\u4e0d\u5bb9\u6613\u79fb\u690d\uff0c\u5404\u4e2a\u6587\u4ef6\u4e4b\u95f4\u6700\u597d\u662f\u8d8a\u72ec\u7acb\u8d8a\u597d\u3002\u4f60\u63d0\u5230\u7684\u6570\u636e\u4f20\u9012\uff0c\u4e00\u822c\u662f\u901a\u8fc7\u51fd\u6570\u63a5\u53e3\u6765\u5b9e\u73b0\u7684\u3002\u5c31\u662f\u8bf4\u6211\u8981\u7528\u53e6\u4e00\u4e2aC\u6587\u4ef6\u4e2d\u7684\u67d0\u4e00\u4e2a\u529f\u80fd\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u901a\u8fc7include\u5b83\u7684\u5934\u6587\u4ef6\uff0c\u7136\u540e\u76f4\u63a5\u8c03\u7528\u5b83\u7684\u63a5\u53e3\u51fd\u6570\uff0c\u8fd9\u6837\u76ee\u7684\u5c31\u8fbe\u5230\u4e86\uff0c\u8fd9\u6837\u5b9e\u73b0\u7684\u597d\u5904\u5c31\u662f\u6613\u4e8e\u79fb\u690d\u3002\u8fd9\u4e2a\u6982\u5ff5\u662f\u5f88\u91cd\u8981\u7684\uff0c\u8fd9\u6837\u597d\u4e9b\u51fd\u6570\uff0c\u4f60\u5199\u5b8c\u4e00\u904d\u4e4b\u540e\u5c31\u662f\u4e00\u52b3\u6c38\u9038\u5566\uff0c\u5927\u5bb6\u90fd\u77e5\u9053C\u7684\u79fb\u690d\u6027\u5f88\u597d\u561b\u3002\u660e\u767d\u4e86\u5417\uff1f
\u5e0c\u671b\u8fd9\u4e2a\u56de\u7b54\u80fd\u5bf9\u4f60\u6709\u5e2e\u52a9\u54c8~

服务器端(发送文件):首先打开文件【fopen】,用rb方式打开,既可以发送文本文件,也可以发送二进制文件,在无错时初始化套接字socket,即初始化socket库【WSAStartup】,分配socket【socket】,填充服务器的地址,即填充sockaddr_in结构,然后进行绑定【bind】,设置套接字为监听套接字【listen】,接收连接【accept】,至此服务器阻塞,等待客户端的连接。
客户端(接收文件):首先打开文件【fopen】,用wb方式打开,在无错时初始化套接字socket,即初始化socket库【WSAStartup】,分配socket【socket】,填充客户端的地址,即填充sockaddr_in结构,然后进行绑定【bind】,再填充服务器的地址结构,然后调用【connect】进行连接,当连接成功后,第一阶段的工作便结束了。
第二阶段,发送文件。
服务器端:使用循环while,结束条件是(!feof(fp)),fp是文件指针,feof检测当前的文件读取指针是否到达文件尾部,若到达了就返回真,否则返回假。然后在循环内部依次调用【fread】、【send】进行发送。这里有一个问题需要注意,调用fread的时候有两个参数是要每次读多少字节和读多少次,将第一个设置为1,将第二个设置为缓冲区的大小,用一个变量记录实际读到多少字节,即【fread】的返回值,然后将其传递给【send】,就可以实现发送文件了,在发送完成后断开连接【closesocket】,关闭文件【fclose】。
客户端:使用while死循环,调用【recv】接收文件,【fwrite】写入文件,这里也有个和上面类似的问题,就是要将recv的返回值传递给fwrite的第三个参数,即受到了多少字节,就向文件中写多少字节。当recv返回值为0时(连接断开时)退出循环,【closesocket】关闭套接字,调用【fclose】关闭文件。

  • c璇█鏂囦欢浼犺緭
    绛旓細鏈嶅姟鍣ㄧ锛堝彂閫鏂囦欢锛夛細棣栧厛鎵撳紑鏂囦欢銆恌open銆戯紝鐢╮b鏂瑰紡鎵撳紑锛屾棦鍙互鍙戦佹枃鏈枃浠讹紝涔熷彲浠ュ彂閫佷簩杩涘埗鏂囦欢锛屽湪鏃犻敊鏃跺垵濮嬪寲濂楁帴瀛梥ocket锛屽嵆鍒濆鍖杝ocket搴撱怶SAStartup銆戯紝鍒嗛厤socket銆恠ocket銆戯紝濉厖鏈嶅姟鍣ㄧ殑鍦板潃锛屽嵆濉厖sockaddr_in缁撴瀯锛岀劧鍚庤繘琛岀粦瀹氥恇ind銆戯紝璁剧疆濂楁帴瀛椾负鐩戝惉濂楁帴瀛椼恖isten銆戯紝鎺ユ敹杩炴帴...
  • 濡備綍鐢c璇█瀹炵幇涓婁紶鏂囦欢
    绛旓細1.C璇█鍙互浣跨敤CStdioFile鍑芥暟鎵撳紑鏈湴鏂囦欢銆備娇鐢ㄧ被CInternetSession 鍒涘缓骞跺垵濮嬪寲涓涓狪nternet鎵撳紑FTP鏈嶅姟鍣ㄦ枃浠躲侰StdioFile缁ф壙鑷狢File锛屼竴涓狢StdioFile 瀵硅薄浠h〃涓涓敤杩愯鏃跺嚱鏁癴open 鎵撳紑鐨凜 杩愯鏃舵祦寮忔枃浠躲傛祦寮忔枃浠舵槸琚紦鍐茬殑锛岃屼笖鍙互浠ユ枃鏈柟寮忥紙缂虹渷锛夋垨浜岃繘鍒舵柟寮忔墦寮銆傛枃鏈柟寮忔彁渚涘纭洖杞︹旀崲琛...
  • 鎵嬫満鐗c璇█缂栬瘧鍣ㄤ笂浼犵數鑴
    绛旓細鍒嗕负浠ヤ笅鍑犱釜姝ラ銆1銆佸湪鐢佃剳涓婁笅杞藉井淇°2銆佹妸鎵嬫満寰俊鍚屾椂鐧诲綍鍒扮數鑴戙3銆佹墜鏈轰笂涓嬭浇C璇█锛屼粠寰俊鏂囦欢浼犺緭浼犺緭鍒扮數鑴戝井淇°
  • 璇锋暀鐢C璇█缂栫殑鍊熷姪UDP鍗忚瀹炵幇鐨鏂囦欢浼犺緭鐨勭▼搴
    绛旓細printf("%s\n", "璇疯緭鍏ラ夐」,1.鍙戦鏂囦欢銆2.鎺ユ敹鏂囦欢銆"); scanf("%d", &iOption); // 鍙戦佹枃浠 if(iOption == 1) { iServerPort = 1025; iClientPort = 1024; fileName: printf("%s\n", "璇疯緭鍏ラ渶瑕佸彂閫佺殑璺緞鏂囦欢鍚嶃俓nWindows 璺緞鏂囦欢鍚嶆牸寮:\t\tC:\\install.txt\nLinux 璺緞鏂囦欢鍚嶆牸...
  • C璇█瀹夊叏鏂囦欢浼犺緭绋嬪簭璁捐銆
    绛旓細瀹夊叏鏂囦欢浼犺緭绋嬪簭锛熷氨鏄疶CP浼犺緭鍚э細闅忎究鍐欎簡涓嬶紝濂藉鍦版柟閮芥病鎬庝箞楠岃瘉锛屾瘮濡傚緟鍙戦佺殑鏂囦欢鏄惁瀛樺湪锛涗唬鐮佸涓嬶紙姝ょ▼搴忕敤浜嶹INDOWS锛屾垜鐢ㄧ殑鏄疺C璋冭瘯鐨勶紝LINUX涓嬫柟娉曠暐鏈変笉鍚岋級鏂囦欢鎺ユ敹绔細#pragma comment(lib,"ws2_32.lib")#include <stdio.h> include <io.h> include <winsock2.h> include <fcntl....
  • winsocket浣跨敤c瀹炵幇鏂囦欢浼犺緭鍏蜂綋濡備綍鎿嶄綔?
    绛旓細1. client鍙戦佽姹傦紝姣斿 get [filename]2. server璇诲彇璇锋眰锛屽苟寰楀埌鏂囦欢鍚嶃俿erver鏌ョ湅鏄惁鏈夎鏂囦欢锛屾湁鐨勮瘽缁檆lient鍙戦乺eady鐨勪俊鍙(瀛楃涓)锛宑lient鏀跺埌璇ヤ俊鍙峰悗杩涘叆鎺ユ敹鏂囦欢鐘舵併3. server璇诲彇鏂囦欢鍒癰uf涓紝骞舵寜鑷畾涔夊崗璁殑鏍煎紡鍖呰鏂囦欢鏁版嵁銆傜劧鍚庡彂閫併4. 椤靛ご涓婂彲浠ョ敤涓涓瓧娈垫潵鎸囩ず鏄惁涓烘湯椤碉紝...
  • 濡備綍鍦╱nix涓,c璇█涓疄鐜癴tp鏂囦欢浼犺緭
    绛旓細{ short shPortNumber;long lAddr;char RecvBuf[1024];char SendBuf[1024];int RecvLen,SendLen;shPortNumber=htons(21);lAddr=inet_addr(Host);memset(HostName,0,16);memcpy(HostName,Host,strlen(Host));hClient=socket(AF_INET,SOCK_STREAM,0);if (hClient<0){ return -1;} ...
  • C璇█socket缂栫▼瀹炵幇缃戠粶鏁版嵁浼犺緭
    绛旓細//printf("瀹㈡埛绔凡鎵撳紑\n璇疯緭鍏ュ瓨鏀鏂囦欢鍦板潃锛歕n");char FilePath[128]={"0"};ltoa(cnt,FilePath,10);if((fp=fopen(FilePath,"wb"))==NULL){ printf("鏂囦欢鏈墦寮\n");return;} else { send(s,"寮濮嬩紶閫",strlen("寮濮嬩紶閫")+1,0);//寰楀埌鏂囦欢澶у皬 char Size[20];long int ...
  • C璇█缂栧啓TCP鐨鏂囦欢浼犺緭
    绛旓細鎵璋撶殑閫氫俊灏辨槸鎴戝彂璇锋眰缁欎綘,浣犵粰鎴戝簲绛(璇锋眰鎴愬姛杩樻槸澶辫触).浣犲垰瀛︾綉缁滅紪绋,鐩存帴鏄娇鐢╰cp涓嶆槸寰堝悎閫,浣犲彲浠ュ幓鐪嬬湅TFTP鐨勫崗璁(鍚戞湇鍔″櫒璇锋眰涓嬭浇鎴栬呬笂浼鏂囦欢).澶嶆潅涓鐐圭殑绋嬪簭涓鎼兘闇瑕佸畾鍒剁綉缁滃崗璁,tcp鍒欒繕闇瑕佸鐞嗙矘鍖呴棶棰.濡傛灉浣犳兂瀛,鍙互鍜屾垜鑱旂郴,鎴戝彲浠ュ彂浣犺祫鏂欌啋_鈫 ...
  • 鐢C璇█鎬庝箞瀹炵幇灏嗘暟鎹粠涓鍙扮數鑴浼犺緭缁欏彟涓鍙扮數鑴,鏄氳繃鏂囦欢鎿嶄綔鍚...
    绛旓細鍙互浣跨敤 TCP/IP閫氫俊锛屾妸鏁版嵁閫氳繃缃戠粶 socket鏉浼犺緭
  • 扩展阅读:手机互传文件app ... 文件传输app下载 ... 手机与手机互传文件 ... c++常用头文件大全 ... 文件传输网页版 ... c语言头文件怎么导入 ... c++万能头文件怎么写 ... c++编程 ... c语言头文件及其用法大全 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网