?? client2.cpp
字號(hào):
#include"Winsock.h"
#include"Windows.h"
#include"stdio.h"
#pragma comment(lib,"wsock32.lib")
#define RECV_PORT 2000
#define SEND_PORT 3000
#define MAX_FILESIZE 32*1024
SOCKET sock;
SOCKADDR_IN ServerAddr;
struct Filedata
{
char ffname[30];
char ffdata[MAX_FILESIZE];
int len;
}DataPacket;
DWORD StartSock()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) //初始化套接字
{
printf("sock init fail!\n");
return(-1);
}
ServerAddr.sin_family=AF_INET; //填充服務(wù)器地址及其端口號(hào)
ServerAddr.sin_addr.s_addr=inet_addr("59.74.24.138");
ServerAddr.sin_port=htons(RECV_PORT);
return(1);
}
DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0); //創(chuàng)建套接字
if(sock==SOCKET_ERROR)
{
printf("sock create fail!\n");
WSACleanup();
return(-1);
}
return(1);
}
void CallServer() //呼叫服務(wù)器,請(qǐng)求鏈接
{
CreateSocket();
while(connect(sock,(struct sockaddr*)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)
{
printf("Connect...\n");
}
}
DWORD GetFile(char *fname)
{
FILE *fp;
int Filesize;
int i;
// char c;
int count,totol=0;
char buffer[100];
char Senddata[MAX_FILESIZE];
fp=fopen(fname,"r");//以讀方式打開(kāi)一個(gè)文件
if(fp==NULL)
{
printf("cannot open this file!\n");
return(0);
}
i=0;
Filesize=0;
memset(Senddata,0,MAX_FILESIZE);
while(!feof(fp))
{
count=fread(buffer,sizeof(char),100,fp);//讀方式,一次讀入100個(gè)字節(jié)
if(ferror(fp))
{
printf("Read File error");
break;
}
Filesize+=count;
if(Filesize>MAX_FILESIZE)
{
printf("your file is too big\n");
fclose(fp);
return(0);
}
memcpy(&Senddata[i],buffer,count);
i+=count;
}
fclose(fp);
Senddata[i]='\0';
strcpy(DataPacket.ffname,fname);
memcpy(DataPacket.ffdata,Senddata,Filesize);
DataPacket.len=Filesize;
printf("%s,%d\n",DataPacket.ffname,DataPacket.len);
return(1);
}
DWORD TCPSendPacket(struct Filedata Packet) //向服務(wù)器發(fā)送數(shù)據(jù)
{
int length;
length=send(sock,(char *)&Packet,sizeof(DataPacket),0);
if(length<=0)
{
printf("send data error!\n");
closesocket(sock);
WSACleanup();
return(-1);
}
return(1);
}
int main()
{
char sendfilename[30];
// char c;
StartSock();
CallServer();
printf("connectok!\n");
while(1)
{
printf("please input your file name send:(exit--退出)\n");
scanf("%s",sendfilename);
if(strcmp(sendfilename,"exit")==0)
break;
if(GetFile(sendfilename)==0)
continue;
TCPSendPacket(DataPacket);
}
closesocket(sock);
return(0);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -