资源简介
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
- 上一篇:JPEG源码(C语言实现)
- 下一篇:BASIC语言编程初学者手册
相关资源
- C实现基于Socket实现自定义协议通信
- MFC:Socket编程—TCP服务端和多个客户
- ABB机器人的socket通信UDPRapid代码
- C++ IOCP socket完成端口视频教程及源码
- p2p的C语言编写,LINUX可执行程序+运行
- socket模拟工具
- WebsocketPP C++构建Web服务器源代码
- vc网络聊天室源代码mfc聊天器VC网络编
- c++ builder socket
- mfc聊天程序,利用TCP/IP完成双向数据
- 基于socket和opencv在linux中实现摄像头实
- HJ212TCPServerMFC.rar(MFC HJ212TCP Socket服务
- HJ212TCPServerC.rar(TCP Socket多线程服务端
- C++ 纯SOCKET实现FTP客户端类
- MFC网络编程源代码vc网络编程mfc sock
- VC6.0下的socket编程 实现了UDP数据传输
- ABB机械臂与PC通讯(socket),附RAPID和
- C++多线程SOCKET收发
- c++ websocket服务器和html客户端
- vc++ socket编程(服务器/客户端)
- Windows Sockets 规范及应用-Windows网络编
- Windows Sockets 编程及UR机器人通信数据
- c++ 文件传输项目源码(附socket服务器
- 基于C#的Socket TCP通信,服务端源代码
- VC++基于SOCKET的简易网络聊天室
- qt简易基于socket的聊天室系统(源码
- VC Socket GETPOST发送HTTP请求
- TCP/IP Socket操作(c++在线聊天源码)
- tcp SOCKET 聊天室(含服务端源码、客户
- socket(TCP)相互通讯
评论
共有 条评论