70,023
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#define MAX_FILE_NAME_LEN 100
#define FILE_NAME "1.txt"
int main()
{
WSADATA wsaData;
SOCKET sock;
int recvLen;
char szFileName[MAX_FILE_NAME_LEN + 1];
FILE *file;
char buf[512];
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("WSAStratup Failure!\n");
return 1;
}
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
printf("Create Socket Failure!\n");
WSACleanup();
return 1;
}
sockaddr_in addr;
addr.sin_port = htons(8888);
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(sock, (sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
printf("Connect Failure!\n");
WSACleanup();
return 1;
}
strcpy(szFileName, FILE_NAME);
szFileName[0] = '2';
file = fopen(szFileName, "w+");
if (file == NULL)
{
printf("Open File [%s] Failure!\n", szFileName);
WSACleanup();
return 1;
}
if (send(sock, FILE_NAME, strlen(FILE_NAME), 0) == SOCKET_ERROR)
{
printf("Send Failure!\n");
int k = WSAGetLastError();
WSACleanup();
return 1;
}
while (1)
{
recvLen = recv(sock, buf, 512, 0);
if (recvLen == 0 || recvLen == SOCKET_ERROR)
{
break;
}
fwrite(buf, 1, recvLen, file);
}
fclose(file);
printf("接收文件[%s]完成!\n", szFileName);
WSACleanup();
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#define MAX_FILE_NAME_LEN 100
int main()
{
WSADATA wsaData;
SOCKET sock;
char szFileName[MAX_FILE_NAME_LEN + 1];
int recvLen;
FILE *file;
char buf[512];
int len;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("WSAStratup Failure!\n");
return 1;
}
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
printf("Create Socket Failure!\n");
goto EXIT;
}
sockaddr_in addr;
addr.sin_port = htons(8888);
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (bind(sock, (sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
printf("Bind Failure!\n");
goto EXIT;
}
printf("绑定端口[8888]成功!\n");
if (listen(sock, 1) == SOCKET_ERROR)
{
printf("Listen Failure!\n");
goto EXIT;
}
printf("开始监听...\n");
SOCKET clientsock;
sockaddr_in clientaddr;
len = sizeof(sockaddr_in);
clientsock = accept(sock, (sockaddr*)&clientaddr, &len);
if (clientsock == INVALID_SOCKET)
{
printf("Accept Failure!\n");
goto EXIT;
}
memset(szFileName, 0, sizeof(szFileName));
recvLen = recv(clientsock, szFileName, MAX_FILE_NAME_LEN, 0);
if (recvLen == 0)
{
printf("Connection Closed!\n");
goto EXIT;
}
else if (recvLen == SOCKET_ERROR)
{
printf("Recv Failure!\n");
goto EXIT;
}
file = fopen(szFileName, "r");
if (file == NULL)
{
printf("Open File [%s] Failure!\n", szFileName);
goto EXIT;
}
while (!feof(file))
{
int readLen;
readLen = fread(buf, 1, 512, file);
if (ferror(file))
{
printf("Read File Failure!\n");
goto EXIT;
}
if (send(clientsock, buf, readLen, 0) == SOCKET_ERROR)
{
printf("Send Failure!\n");
goto EXIT;
}
}
fclose(file);
printf("发送文件[%s]完成!\n", szFileName);
EXIT:
WSACleanup();
system("pause");
return 0;
}