資源簡介
設計一個服務器程序和一個客戶端程序。
客戶端可以將本地文件上傳至服務器,服務器接收到文件后,
將文件存儲到固定的目錄,例如D:\Temp目錄,
文件名稱為“客戶端IP地址-時間-兩位隨機數”,
例如“19216831213-20110530-12”文件的后綴名和上傳文件后綴名一致。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#define?BACKLOG?10
#define?filename?30
#define?onekb?1024
using?namespace?std;
//#pragma?comment?
void?main()
{
int?sockfd?client_fd;
struct?sockaddr_in?my_addr;
struct?sockaddr_in?client_addr;
WSADATA?wsaData;
WORD?wVersionRequested?=?MAKEWORD(11);
if?(WSAStartup(wVersionRequested?&wsaData))
{
cout<<“連接socket庫失敗,檢查版本號是否為1.1“< exit(1);
}
sockfd?=?socket(AF_INET?SOCK_STREAM?0);
if?(sockfd?==?INVALID_SOCKET)
{
cout<<“創建socket失敗“< exit(1);
}
my_addr.sin_family?=?AF_INET;
my_addr.sin_port?=?htons(80);
//my_addr.sin_addr.s_addr?=?htonl(INADDR_ANY);
my_addr.sin_addr.s_addr?=?inet_addr(“192.168.1.115“);
memset(my_addr.sin_zero?0?8);
if?(bind(sockfd?(struct?sockaddr?*)&my_addr?sizeof(struct?sockaddr)?)==?-1)
{
cout<<“綁定失敗“< //cout< exit(1);
}
if?(listen(sockfd?BACKLOG)?==?-1)
{
cout<<“監聽失敗“< exit(1);
}
int?size;
size?=?sizeof(struct?sockaddr_in);
client_fd?=?accept(sockfd?(struct?sockaddr?*)&client_addr?&size);
while?(client_fd?==?SOCKET_ERROR)
{
cout<<“連接失敗“< client_fd?=?accept(sockfd?(struct?sockaddr?*)&client_addr?&size);
continue;
}
if(send(client_fd?“已連接上:“?sizeof(“已連接上“)?0)?==?-1)
{
cout<<“send出錯“< exit(1);
}
char?buffer[filename];
char?sendmesg[onekb];
int?abc;
while?(1)
{
a?=?recv(client_fd?buffer?sizeof(buffer)?0);
if?(a?==?SOCKET_ERROR)
{
cout<<“接收失敗!“< exit(1);
}
- 上一篇:遺傳算法、免疫算法源碼C
- 下一篇:Linux軟件工程師(C語言)實用教程_
評論
共有 條評論