?? server2.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,sock1;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
struct Filedata
{
char ffname[30];
char ffdata[MAX_FILESIZE];
int len;
}DataPacket;
int Addrlen;
DWORD StartSock()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) //初始化套接字
{
printf("sock init fail!\n");
return(-1);
}
return(1);
}
DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0); //創建套接字
if(sock==SOCKET_ERROR)
{
printf("sock create fail!\n");
WSACleanup();
return(-1);
}
ServerAddr.sin_family=AF_INET; //填充服務器地址及端口號
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
ServerAddr.sin_port=htons(RECV_PORT);
if(bind(sock,(struct sockaddr FAR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)
{
printf("bind is the error");
return(-1);
}
return(1);
}
DWORD WriteFile(char * fname,char *fdata,int flen)
{
int i;
FILE *fp;
fp=fopen(fname,"w"); //以寫方式打開一些文件
if(fp==NULL)
{
printf("cannot open this file!\n");
}
i=0;
for(i=0;i<flen;i++)
{
fputc(fdata[i],fp);
}
fclose(fp);
return(1);
}
DWORD ConnectProcess()
{
//char buff[80];
Addrlen=sizeof(sockaddr_in);
if(listen(sock,5)<0)
{
printf("listen error");
return(-1);
}
printf("listening...\n");
for(;;)
{
sock1=accept(sock,(struct sockaddr FAR *)&ClientAddr,&Addrlen);
for(;;)
{
memset(DataPacket.ffname,0,30);
memset(DataPacket.ffdata,0,MAX_FILESIZE);
DataPacket.len=0;
if(recv(sock1,(char *)&DataPacket,sizeof(DataPacket),0)<=0)
{
break;
}
printf("Has receivedfile:%s,length is: %d",DataPacket.ffname,DataPacket.len);
printf("\n");
char filename[30];
printf("please input the filepath and filename:");
printf("\n");
scanf("%s",filename);
WriteFile(filename,DataPacket.ffdata,DataPacket.len);//寫文件
printf("\n");
printf("Write file success!!");
}
}
}
int main()
{
if(StartSock()==-1)
return(-1);
if(CreateSocket()==-1)
return(-1);
if(ConnectProcess()==-1)
return(-1);
return(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -