• 大小: 42KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: socket  

资源简介

C语言socket编程指南(讲解+实例)

资源截图

代码片段和文件信息

/********************************************************************
created: 2006/07/28
filename:  Client.cpp
author: 李创
http://www.cppblog.com/converse/

purpose:
*********************************************************************/

#pragma comment(lib “WS2_32“)

#include 
#include 
#include 

#include “../CommonDef.h“

long g_lLength = 0;
char* g_pBuff = NULL;
char g_szFileName[MAXFILEDIRLENGTH];
char g_szBuff[MAX_PACKET_SIZE + 1];
SOCKET g_sClient;

// 初始化socket库
bool InitSocket();
// 关闭socket库
bool CloseSocket();
// 把用户输入的文件路径传送到server端
bool SendFileNameToServer();
// 与server端连接
bool ConectToServer();
// 打开文件失败
bool OpenFileError(CCSDef::TMSG_HEADER *pMsgHeader);
// 分配空间以便写入文件
bool AllocateMemoryForFile(CCSDef::TMSG_HEADER *pMsgHeader);
// 写入文件
bool WriteToFile(CCSDef::TMSG_HEADER *pMsgHeader);
// 处理server端传送过来的消息
bool ProcessMsg();

int main(int argc char *argv[])
{

InitSocket();
ConectToServer();

CloseSocket();

return 0;
}

// 初始化socket库
bool InitSocket()
{
PGG_DEBUG(“InitSocket() invoke begin“);

// 初始化socket dll
WSADATA wsaData;
WORD socketVersion = MAKEWORD(2 2);
if (::WSAStartup(socketVersion &wsaData) != 0)
{
printf(“Init socket dll error\n“);
exit(-1);
}

PGG_DEBUG(“InitSocket() invoke end return true“);
return true;
}

// 关闭socket库
bool CloseSocket()
{
// 关闭套接字
::closesocket(g_sClient);
// 释放winsock库
::WSACleanup();

return true;
}

// 与server端连接进行文件的传输
bool ConectToServer()
{
// 初始化socket套接字
if (SOCKET_ERROR == (g_sClient = ::socket(AF_INET SOCK_STREAM IPPROTO_TCP)))
{
printf(“Init Socket Error!\n“);
exit(-1);
}

sockaddr_in servAddr;
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(PORT);
servAddr.sin_addr.S_un.S_addr = ::inet_addr(SERVER_IP);
if (INVALID_SOCKET == (::connect(g_sClient (sockaddr*)&servAddr sizeof(sockaddr_in))))
{
printf(“Connect to Server Error!\n“);
exit(-1);
}

// 输入文件路径传输到server端
SendFileNameToServer();

// 接收server端传过来的信息直到保存文件成功为止
while (true == ProcessMsg())
{
}

return true;
}

// 把用户输入的文件路径传送到server端
bool SendFileNameToServer()
{
char szFileName[MAXFILEDIRLENGTH];
printf(“Input the File Directory: “);

fgets(szFileName MAXFILEDIRLENGTH stdin);

// 把文件路径发到server端
CCSDef::TMSG_FILENAME tMsgRequestFileName;
strcpy(tMsgRequestFileName.szFileName szFileName);
if (SOCKET_ERROR == ::send(g_sClient (char*)(&tMsgRequestFileName) sizeof(CCSDef::TMSG_FILENAME) 0))
{
printf(“Send File Name Error!\n“);
exit(-1);
}

return true;
}

// 处理server端传送过来的消息
bool ProcessMsg()
{
CCSDef::TMSG_HEADER *pMsgHeader;
int nRecv = ::recv(g_sClient g_szBuff MAX_PACKET_SIZE + 1 0);

pMsgHeader = (CCSDef::TMSG_HEADER*)g_szBuff;

switch (pMsgHeader->cMsgID)
{
case MSG_OPENFILE_ERROR: // 打开文件错误
{
OpenFileError(pMsgHeader);
}
break;
case MSG_FILELENG

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6453  2011-03-22 21:36  C语言socket编程指南(讲解+实例)\code\Client\Client.cpp

     文件       4401  2011-03-22 21:36  C语言socket编程指南(讲解+实例)\code\Client\Client.dsp

     文件        535  2011-03-13 07:01  C语言socket编程指南(讲解+实例)\code\Client\Client.dsw

     文件       5821  2011-03-13 19:48  C语言socket编程指南(讲解+实例)\code\Server\Server.cpp

     文件       4349  2006-07-31 14:17  C语言socket编程指南(讲解+实例)\code\Server\Server.dsp

     文件        535  2011-03-13 07:00  C语言socket编程指南(讲解+实例)\code\Server\Server.dsw

     文件       2677  2011-03-13 07:02  C语言socket编程指南(讲解+实例)\code\CommonDef.h

     文件        736  2006-07-31 14:19  C语言socket编程指南(讲解+实例)\code\SocketDemo.dsw

     文件     174080  2011-03-16 07:55  C语言socket编程指南(讲解+实例)\C语言socket编程指南.doc

     文件        272  2011-03-23 07:06  C语言socket编程指南(讲解+实例)\说明.txt

     目录          0  2011-03-23 07:02  C语言socket编程指南(讲解+实例)\code\Client

     目录          0  2011-03-23 07:02  C语言socket编程指南(讲解+实例)\code\Server

     目录          0  2011-03-23 07:03  C语言socket编程指南(讲解+实例)\code

     目录          0  2011-03-23 07:02  C语言socket编程指南(讲解+实例)

----------- ---------  ---------- -----  ----

               199859                    14


评论

共有 条评论