| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5367 人关注过本帖, 1 人收藏
标题:小鱼儿--控制台p2p聊天工具(里面)
只看楼主 加入收藏
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
结帖率:95.74%
收藏(1)
 问题点数:0 回复次数:69 
小鱼儿--控制台p2p聊天工具(里面)
自己这1天看了好多有关网络编程视频+加书籍。。
感觉其实都差不多,看了高手说得很简洁明了。所以看书和视频还是要看高手,名师的。
一些二流人确实差多了,说也不说清,只要糊弄过就算了。
发现看了那么多,还不与早点写代码,就不会浪费自己一天的时间看他们。早点写还好一点。。
本想用select模型。但我发现我这样的控制台没有用。一样像那么一回事。

申明:pcc32.h 是一位高手RedOc写的函数库。 我直接拿来用了,省的自己写。。。
本想在控制台画矩形的,由于难得麻烦。自己直接用直线代替了,但由于中文字符有间隔,根本就不能连起来。。。
本想加一个可以加一个后门程序,没有精力写了,没有时间了,又到了期末了,还是要看下书。。。。
直接贴图:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
#include "StdAfx.h"
#include "Server.h"
#include <string.h>
#include "pcc32.h"
#include "MyLine.h"
#include "Init.h"

Pos xyPos={1,1};
DWORD    WINAPI ServerThreadFun(LPVOID laparam)
{
    char buf[256];
    SOCKET m_sock=*(SOCKET *)laparam;
    while(1)
    {
        gotoxy(6,21);
        /*puts("send:");*/
        gets(buf);
        Sleep(50);
        ClearThere(6,21,65,23);
        int flag=send(m_sock,buf,256,0);
   if(flag)
   {
       gotoxy(42,15);
       puts("发送成功");
   }
    }
   return 1;
}

int TcpServer()
{
    WSADATA data;
    ZeroMemory(&data,sizeof(data));
    WSAStartup(MAKEWORD(2,0),&data);
    SOCKET sListen=socket(AF_INET,SOCK_STREAM,0);
    if(sListen==INVALID_SOCKET)
    {
        return FALSE;
    }
    sockaddr_in local={0},client;
    local.sin_family=AF_INET;
    local.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    local.sin_port=htons(1808);
    if(bind(sListen,(sockaddr *)&local,sizeof(sockaddr_in))==SOCKET_ERROR)
    {
        return FALSE;
    }
    if(listen(sListen,5)==SOCKET_ERROR)
    {

        return FALSE;
    }
    gotoxy(42,8);
    puts("服务已经启动");
    int addrlen=sizeof(sockaddr_in);
    SOCKET sClient=accept(sListen,(sockaddr *)&client,&addrlen);
    char buf[256]={0};
    sprintf(buf,"IP:%s  端口%d",inet_ntoa(client.sin_addr),ntohs(client.sin_port));
    gotoxy(42,12);
    puts(buf);
    gotoxy(6,21);
    CreateThread(NULL,0,ServerThreadFun,&sClient,0,0);
    while(1)
    {
         char buf[256];
         int flag=recv(sClient,buf,sizeof(buf),0);
         if(flag<=0)
         {
             gotoxy(42,15);
             puts("你的朋友已经下线了");
             break;
         }
         else
         {
             gotoxy(xyPos.x,xyPos.y);
             puts(buf);
             xyPos.x=getCursorX();
             xyPos.y=getCursorY();
             if(xyPos.y>=19)
             {
                 ClearThere(0,1,38,19);
                 xyPos.x=1;
                 xyPos.y=1;
             }
         }
         gotoxy(6,21);
    }
    closesocket(sClient);
    closesocket(sListen);
    WSACleanup();
return 1;
}
收到的鲜花
  • Devil_W2011-12-15 15:55 送鲜花  -3朵   附言:知道什么是 P2P吗?
搜索更多相关主题的帖子: 视频 都差不多 网络编程 聊天工具 控制台 
2011-12-13 00:41
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
运行程序附件
小鱼儿p2p聊天.zip (38.05 KB)

大家可能运行可以看看这些控制台细节。
比喻我发送数据后,我send:后面的字符串会消失。
当我接受的数据快要满我那下面的绿线时候会清除,回到上面出。。。

大家如果对源码感兴趣的话,可以留言。。。

用心做一件事情就这么简单
2011-12-13 00:45
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
表示很感兴趣,不过以我现在的知识水平还差很多啊。。。。TAT

何必等待?梦在今朝
2011-12-13 02:24
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
另外再弱弱地问一下,学校封杀P2P(迅雷P2P加速用不了。。。。),还能运用这个程序吗?

何必等待?梦在今朝
2011-12-13 02:26
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用zy_space在2011-12-13 02:26:40的发言:

另外再弱弱地问一下,学校封杀P2P(迅雷P2P加速用不了。。。。),还能运用这个程序吗?
嘿嘿,没有呢。我的意思一个对一个。。
没有那么高级呢。。
我的技术还很差呢。。。。。

用心做一件事情就这么简单
2011-12-13 08:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你看了那么多资料,没想到看看TCP/IP原理?通讯功能,实现到哪个层面,由你根据实际情况决定,技术也由此决定,不是人家告诉你如何这般即可通讯就了事的。TCP/IP协定7个层面,有好几种从低到高的通讯模式,看你选中哪一种,就针对那一种来做,这样才有目标。

单机对单机,主要看通讯方式,直接用电缆连可以,用串行线连也可以,用并行线连也可以,用蓝牙、红外等连也可以。你采用的技术,跟现实情况吻合吗?有IP让你用,系统上有TCP/IP底层介面软件,你似乎觉得那技术很简单,问题是某些时候没有这些东西,或者对不上号。要能够在各种情况下均能应付,那才算是高手。这与算法什么的无关,归根结底就是专业原理而已。

[ 本帖最后由 TonyDeng 于 2011-12-13 16:01 编辑 ]

授人以渔,不授人以鱼。
2011-12-13 15:55
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用TonyDeng在2011-12-13 15:55:21的发言:

你看了那么多资料,没想到看看TCP/IP原理?通讯功能,实现到哪个层面,由你根据实际情况决定,技术也由此决定,不是人家告诉你如何这般即可通讯就了事的。TCP/IP协定7个层面,有好几种从低到高的通讯模式,看你选中哪一种,就针对那一种来做,这样才有目标。

单机对单机,主要看通讯方式,直接用电缆连可以,用串行线连也可以,用并行线连也可以,用蓝牙、红外等连也可以。你采用的技术,跟现实情况吻合吗?有IP让你用,系统上有TCP/IP底层介面软件,你似乎觉得那技术很简单,问题是某些时候没有这些东西,或者对不上号。要能够在各种情况下均能应付,那才算是高手。这与算法什么的无关,归根结底就是专业原理而已。
这个程序只是写着玩的,无聊的时候想写一下而已,这个程序我也主要写一些控制台的细节,和阻塞的一些问题,了解一下线程而已。根本聊天的代码没有多少,而且我都没有按照书上或视频写的,我只是按照自己思考的逻辑写写,而且我也看许多原理通信。。。
你要这样说的话,只要双方能通过一种协议 一种约定都可以通信啊,用眼神都可以通信啊。。。。。
所以我不明白你为什么要这么说。。。不知道你的意义何在。。。。。
要说技术那里,只要有时间和方法都可以学会。。。我根本没有鄙视哪种技术的意思。
而且你觉得难道你开始编程你就明白编译原理,理解计算机原理。我想你你不会弄懂以后你才开始编程吧。。什么都是由肤浅到深入。。
我对任何技术都没有鄙视的意思

不过在这里还是感谢你的指点。。。希望你以后能给出更好的建议

用心做一件事情就这么简单
2011-12-13 16:13
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
简单的socket通信,基本上每一本讲网络编程的书都会提到这种例子。

小鱼儿兄,给你提点建议,你在编代码的时候多敲点空格,比如说SOCKET     sClient = accept (sListen, (sockaddr * )&client, &addrlen);不然代码看起来太费劲。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-13 17:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
通讯无它的,就是一台机的信息能够到达另一台机而已。首先是信息如何传送的问题,有线抑或无线,存粹电子技术线路问题,此为TCP/IP协议的第一层,是实体层。如果工作需要,是嵌入式操控实体的,编程就只能在这个层面上进行。单机与单机、PC与单片机等等,都不指望带有复杂的中介层面软件,多数是直接通讯,比如用串行电缆连接是最原始的。这种现实,不存在什么IP地址的概念,编程时也不过是双方不断监视通讯端口的数据而已,只要做到不遗漏、没错失数据,就能建立稳定的应答关系。实时监视端口数据是通讯,非实时读写磁盘文件也是通讯,手段多种多样。编程的,无非是考虑如何达成目的,建立通讯协议(未必要遵循通行的协议,可以是双方独特的),是采用有保障有状态的通讯模式,还是采用发了就算不管对方是否收到的模式,都有不同的编程方式。了解存在这么些问题是需要考虑的,比什么都重要,拿人家现成的模块,我们没办法知道它到底基于什么、内里做了什么,那是很皮毛的。要想精通编程,这个才是重点,语言只是浮云。

现在万维网上的页面编程,无状态模式就够折磨人,迟早要被替换掉的。


[ 本帖最后由 TonyDeng 于 2011-12-13 19:12 编辑 ]

授人以渔,不授人以鱼。
2011-12-13 18:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
随心所欲地出界面,是学编程的第一步,你现在才来补,以前的心思都花在语法和算法上了。不过,知道要补这个胜于死不改悔。

授人以渔,不授人以鱼。
2011-12-13 19:08
快速回复:小鱼儿--控制台p2p聊天工具(里面)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040301 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved