文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» C/C++ » 急用 求一网上通信C++程序 请您帮助       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [求助] 急用 求一网上通信C++程序 请您帮助  ( 查看:208  回复:6 )   
 
lily87814
新新人类  点击可查看详细



帖子 15
精华 0
无忧币 2
积分 21
阅读权限 20
注册日期 2008-6-8
最后登录 2008-6-28 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-11 15:40   标题:急用 求一网上通信C++程序 请您帮助
上一帖 |
现急需一个网络上可以通信的VC++程序,希望高手可以帮帮忙。
    能实现传送文件、文字、图片即可。
    可以发送资料到  mtfxwangxiaoli@126.com



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-11 15:401楼
[ 顶部 ]
 
特爱蚂蚁
管理员  点击可查看详细


诚信兄弟   行业勋章   技术勋章   管理员专用   十二生肖之牛  
帖子 1629
精华 3
无忧币 3236
积分 1547
阅读权限 255
来自 (保密)
注册日期 2008-6-3
最后登录 2008-10-7 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-11 15:59 
找到了一个传输图片的

Introduction
The original article proposed to demonstrate elementary network programming by designing a very simple TCP client/server and a simple image viewer. The client select an image file it will send to the server. The server will save and show the image file.

The Client Mainly Code
Collapse
SOCKET_STREAM_FILE_INFO     StreamFileInfo;
WIN32_FIND_DATA             FindFileData;
FindClose( FindFirstFile( strFileName, &FindFileData ) );
memset( &StreamFileInfo, 0, sizeof(SOCKET_STREAM_FILE_INFO) );
strcpy( StreamFileInfo.szFileTitle, myFile.GetFileTitle() );
StreamFileInfo.dwFileAttributes     =       FindFileData.dwFileAttributes;
StreamFileInfo.ftCreationTime       =       FindFileData.ftCreationTime;
StreamFileInfo.ftLastAccessTime     =       FindFileData.ftLastAccessTime;
StreamFileInfo.ftLastWriteTime      =       FindFileData.ftLastWriteTime;
StreamFileInfo.nFileSizeHigh        =       FindFileData.nFileSizeHigh;
StreamFileInfo.nFileSizeLow         =       FindFileData.nFileSizeLow;
GetDlgItem( IDC_IPADDRESS1 )->GetWindowText( strIpAddress );
//////////////////////////////////////////////////////////////////////////
SOCKET server;
WSADATA wsaData;
int wsaret = WSAStartup( MAKEWORD(2,2), &wsaData );
if( wsaret != 0 )
{
    return;
}
sockaddr_in local;
local.sin_family = AF_INET; //Address family
local.sin_addr.s_addr = inet_addr( strIpAddress ); //Wild card IP address
local.sin_port = htons((u_short)8888); //port to use
server = socket( AF_INET, SOCK_STREAM, 0 );
if( server == INVALID_SOCKET )
{
    return;
}
connect( server,(struct sockaddr *)&local, sizeof(local));
send( server, (char *)&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO), 0 );
Sleep( 10 );
UINT dwRead=0;
char temp[1024];
while( dwRead < StreamFileInfo.nFileSizeLow )
{
   memset( temp, 0, 1024 );
   UINT dw = myFile.Read( temp, 1024 );
   send( server, temp, dw, 0 );
   dwRead += dw;
   Sleep( 10 );
}
myFile.Close();
closesocket(server);
WSACleanup();
The Server Mainly Code
Collapse
SOCKET server;
WSADATA wsaData;
int wsaret = WSAStartup( MAKEWORD(2,2), &wsaData );
if( wsaret != 0 )
{
    return 0;
}
sockaddr_in local;
local.sin_family = AF_INET; //Address family
local.sin_addr.s_addr = INADDR_ANY; //Wild card IP address
local.sin_port = htons((u_short)8888); //port to use
server = socket( AF_INET, SOCK_STREAM, 0 );
if( server == INVALID_SOCKET )
{
    return 0;
}
if( bind( server, (sockaddr*)&local, sizeof(local) ) != 0 )
{
    return 0;
}
if( listen( server, 10 ) != 0 )
{
    return 0;
}
SOCKET_STREAM_FILE_INFO  StreamFileInfo;
memset( &StreamFileInfo, 0, sizeof(SOCKET_STREAM_FILE_INFO) );

SOCKET client;
sockaddr_in from;
int fromlen = sizeof( from );
while( pThis->m_bListen )
{
    char temp[1024];
    memset( temp, 0, 1024 );
    client = accept( server, (struct sockaddr*)&from, &fromlen );
    int iLen = recv( client, temp, sizeof(SOCKET_STREAM_FILE_INFO), 0 );
    if( iLen == sizeof(StreamFileInfo) )
    {
        memcpy( &StreamFileInfo, temp, sizeof(StreamFileInfo) );
        CFile destFile( StreamFileInfo.szFileTitle,
            CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
        UINT dwRead = 0;
        while( dwRead < StreamFileInfo.nFileSizeLow )
        {
            memset(temp,0,1024);
            UINT dw = recv( client, temp, 1024, 0 );
            destFile.Write(temp, dw);
            dwRead += dw;
        }
        SetFileTime( (HANDLE)destFile.m_hFile,
            &StreamFileInfo.ftCreationTime, &StreamFileInfo.ftLastAccessTime,
            &StreamFileInfo.ftLastWriteTime );
        destFile.Close();
        SetFileAttributes(StreamFileInfo.szFileTitle,
            StreamFileInfo.dwFileAttributes);
        pThis->LoadPicture( StreamFileInfo.szFileTitle );
    }
    closesocket(client);
}
closesocket(server);
WSACleanup();
Load Image File
CFile file( strPictureName, CFile::modeRead );
if (file.GetLength() == 0)
{
    return;
}
CArchive loadArchive( &file, CArchive::load | CArchive::bNoFlushOnDelete);
loadArchive.m_bForceFlat = FALSE;
CArchiveStream arcstream(&loadArchive);
m_spIPicture.Release();
HRESULT hr = OleLoadPicture( &arcstream, 0, FALSE, IID_IPicture,
    (void**)&m_spIPicture);
loadArchive.Close();
file.Close();



善用论坛论坛搜索功能会使您事半功倍 ...
建议大家发帖前先抬头看看整个论坛和板块的置顶帖了解论坛各项最新制度 ...
请选用高效的沟通方式来和大家沟通 ...同时应该具备一些提问的智慧 ...
勤劳致富,无忧币不再是难题 ...
2008-6-11 15:592楼
[ 顶部 ]
 
lily87814
新新人类  点击可查看详细



帖子 15
精华 0
无忧币 2
积分 21
阅读权限 20
注册日期 2008-6-8
最后登录 2008-6-28 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-11 22:14   标题:回复 #2 特爱蚂蚁 的帖子

谢谢!不知有没有三样都能传的?



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-11 22:143楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


开坛元老   内阁大臣   诚信兄弟   主版主专用   巨蟹座  
帖子 3106
精华 1
无忧币 5979
积分 4096
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-10-7 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-6-12 08:32 
文件、文字、图片,归根到底都是二进制数据

楼主只要一头发二进制数据,另一头接收二进制数据,然后再写入文件即可



用户必读,51CTO积分系统调整通知
2008-6-12 08:324楼
[ 顶部 ]
 
lily87814
新新人类  点击可查看详细



帖子 15
精华 0
无忧币 2
积分 21
阅读权限 20
注册日期 2008-6-8
最后登录 2008-6-28 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-12 15:41   标题:回复 #4 ribut9225 的帖子

在数字网上传的都是二进制高低电平啊。您的意思是?



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-12 15:415楼
[ 顶部 ]
 
hagejid
副版主  点击可查看详细


十二生肖之猴   金牛座   行业勋章   技术勋章   诚信兄弟  
帖子 408
精华 0
无忧币 2144
积分 494
阅读权限 140
注册日期 2007-4-3
最后登录 2008-10-6 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-12 22:49 
ribut9225把别人弄糊涂了,我来弄的更糊涂一点吧,呵呵。
在数字网上传输的不一定是高低电平,也可能是电磁波、光子(也是电磁波,我又在卖弄知识了,呵呵)等等。

不多废话了,SOCKET通信操作就是在读写文件操作一样,对方往一端写入,你从另一端读出,所以不管你发送什么都可以,论坛里有关于这方面的贴,估计沉的不浅,自己找找了。



C到底该不该学,看看这个就明白
2008-6-12 22:496楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


开坛元老   内阁大臣   诚信兄弟   主版主专用   巨蟹座  
帖子 3106
精华 1
无忧币 5979
积分 4096
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-10-7 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-6-13 09:23 
呵呵
越扯越远了
C里的数据类型char,int,float,double
你SERVER端用char读取,CLIENT端用char类型写入
就OK了



用户必读,51CTO积分系统调整通知
2008-6-13 09:237楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号