Windows用socket实现文件传输

这里只写客户端代码。如果链接失败加上libws2_32.a链接库。

下载地址:http://download.csdn.net/detail/e_one/9520205

客户端:

#include 
#include 
#pragma comment(lib,"ws2_32.lib")
#define IPADDR "192.168.253.2"
#define PORT 3574
#define BUFFSIZE 1024
int main(int argc,char **argv)
{
    int err;
    WORD versionRequired;
    WSADATA wsaData;
    versionRequired=MAKEWORD(1,1);
    err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息
    if (!err)    {
        printf("客户端已经打开!\n");
    }else{
        printf("客户端打开失败!\n");
        return 1;//结束
    }
    //SOCK_STREAM 提供有序的、可靠的、双向的和基于连接的字节流,使用带外数据传送机制,为Internet地址族使用TCP。
    SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);
    //地址信息 
    SOCKADDR_IN clientsock_in;
    clientsock_in.sin_addr.S_un.S_addr=inet_addr(IPADDR);
    clientsock_in.sin_family=AF_INET;
    clientsock_in.sin_port=htons(PORT);

    connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR));//开始连接
   
        FILE* fp=fopen("E:/123.mp3","rb");
   
        char buf[BUFFSIZE];
        if(fp==NULL)
        {
        	printf("文件打开失败!"); 
        	return 1;
		}
		int size=0;
		int len=0;
		//如果没有读到文件尾,不断的读文件和发送
        while(!feof(fp))
        {
        	//fread的返回值是读到的字节数 
        	len=fread(buf,1,sizeof(buf),fp);
        	size+=len; 
        	printf("已传输了:%d 字节。\n",size);
        	//发送。buf:要发送的内容,len:数据的大小 
        	send(clientSocket,buf,len,0);
		}
		
        printf("文件传输完成"); 
        closesocket(clientSocket);
        WSACleanup();
    	return 0;
}

Windows用socket实现文件传输_第1张图片

你可能感兴趣的:(C/C++)