📄 client2.cpp
字号:
#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; //填充服务器地址及其端口号
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); //创建套接字
if(sock==SOCKET_ERROR)
{
printf("sock create fail!\n");
WSACleanup();
return(-1);
}
return(1);
}
void CallServer() //呼叫服务器,请求链接
{
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");//以读方式打开一个文件
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个字节
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) //向服务器发送数据
{
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -