你可以参考Delphi自带的例程Delphi->Demos->Internet->chat

解决方案 »

  1.   

    Delphi->Demos->Internet->chat 有例子
      

  2.   

    Delphi->Demos->Internet->chat 有例子?????不要开玩笑。
    不过,来者有分!
    我问的是局域网中的机器和外界的INTERNET上的机器通讯的问题!
      

  3.   

    TCP/IP端口转发,代理服务器工作的那种方式
      

  4.   

    to rwdx(任我独行)  ,就是这个。你知道吗?我需要具体如何做?
    分不是问题。
      

  5.   

    建議在網上Down下SocksOnline.exe后反編譯然后就OK了。
      

  6.   

    to cheerdesiger(随意),不懂!
      

  7.   

    这个我没做过,我只知道其简单的原理,不过做出这样的东西应该不是很难的,找多点TCP/IP编程的资料看看
      

  8.   

    to ZXYSOSO(我很想飛)
    你到是很有趣啊.可以,等我问题解决之后就捐分给你。
      

  9.   

    满世界都是例子在飞啊。先坐一个服务器程序,来记录所有的客户端,每个客户端都向服务器发送消息,再由服务器转发,这样就OK了。服务器记录每一个登陆上来的客户端的IP,转发的时候,通过某一条件查找到客户端的IP,然后转发。这是我的思路,不知道对你有没有用。反正我觉得不难。
      

  10.   

    “ 写代理服务器应该是不难的”,大家都这样说。
    to deathcat(从死亡边缘站起来的猫) 
    :我多台机器在局域网内,就一个IP。你知道信息该给谁?是不是我得写一个程序放在服务器上,用它和外界联系。而且由它负责接受外界的数据,分发到
    局域网内的机器去?那QQ为何没要你在你的服务器上装东西?你如果有例子请给一个,不胜感激![email protected]
     
      

  11.   

    to rwdx(任我独行)
    那是不是说QQ没有管这方面的事?而是由代理完成的?看来我的慨念有问题,还请高人指点。
      

  12.   

    局域网到internet是通过路由实现的,应该是地址映射,编程时候不用管他
      

  13.   

    象QQ这类东西是应用层的,你不用关心其他层的东西,WINDOWS自己就可以共享连接,建议看帮助;如果你是要自己写个代理服务器那又不同;
    建议你去看看http://xexploit.css.com.cn/sjjs/content/1jichu/2osi.htm。了解一下OSI结构哈。然后找本TCP/IP的书啃啃,推荐:
    Internetworking With TCP/IP
      

  14.   

    study study study and study
      

  15.   

    iroi() :
    你的多台电脑在同一个网内,当它们登录网络的时候肯定会自动获得一个IP的。(在网络环境下,计算机之间的访问全部都是通过IP地址来完成的。就好象我门的门牌号码一样)所以,你的计算机上即使没有设置IP地址也是一样的。你可以通过Socet来得到本机的IP地址。在Delphi下不是有两个Socket控件吗?一个是ServerSocket另一个是ClientSocket.你的服务器有两种做法,一种是做一个广播,给每个客户端都发送消息,然后在客户端做过滤,屏弃不属于自己的信息。另一种是在客户端登陆的时候,就将它记录到一个地方,然后根据某种标示(就好象QQ中的号码一样)找到相应的IP地址,再进行发送。服务器上用ServerSocket,客户端上用ClientSocket.
      

  16.   


                             邮件代理服务器及其实现    邮件代理服务器
        代理服务器是一种中转机构,它将来自客户端的请求转至远程服务器,同时将服务器的应答返回到客户端。其目的有二:一是使不可达路径变为可达,即路由型;二是对通信过程实施预定的监控,即应用型。
        邮件代理服务器专用于电子邮件的收发传递,其中用于邮件发送的称为SMTP代理,用于邮件接收的称为POP3代理。电子邮件的收发分别采用SMTP和POP3协议,邮件客户端程序和邮件服务器之间通过一系列约定的命令序列和相应的应答信息,完成邮件收发。应用型邮件代理对邮件收发过程实施监控,必须对邮件的协议、编码等进行具体处理;而路由型代理只负责邮件请求和回应的中转,实现较为简单。本文给出一个路由型代理示例,在此基础上,通过截获和深入分析了解邮件收发过程全部信息,可以按需要进行应用型邮件代理的设计。本文程序中,SMTP和POP3都基于TCP/IP协议,编程接口为SOCKET,采用比较简明的面向对象设计方法,用VB语言实现。
        SMTP代理服务器的实现
        在FORM中设计两个SOCKET控件SktClient和SktServer,前者作为服务器方与邮件客户程序通信,后者作为客户方与远程邮件服务器通信。设计两个TEXT控件TxtClient和TxtServer,用于显示邮件客户端发送的命令请求及邮件服务器回应信息,置其属性为多行可滚动。在Form_Load()过程中填充以下语句,使SMTP代理运行后处于监听状态:
        'SMTP缺省端口号
        SktClient.LocalPort = 25
        '监听邮件客户端连接请求
        SktClient.Listen
        监听到邮件客户端连接请求后,SMTP代理服务器立即连接远程邮件服务器,在SktClient_Connection Request()中加入:
        '关闭监听,进行处理
        If SktClient.State <> sckClosed Then SktClient.Close
        '取得连接的ID号,连接远程邮件服务器
        SktClient.Accept requestID
        '远程邮件服务器地址
        SktServer.RemoteHost = "10.120.15.205"
        '端口号25=SMTP
        SktServer.RemotePort = 25
        '连接
        SktServer.Connect
        SktServer收到应答后在文本框TxtServer中显示数据,并转发给邮件客户端:
        Private Sub SktServer_DataArrival(ByVal bytesTotal As Long)
        Dim strdata As String
        '取出数据
        SktServer.GetData strdata
        '取出数据
        TxtServer.Text=TxtServer.Text+vbCrLf+strdata
        TxtServer.Refresh
        '服务器回应并转发到客户端
        SktClient.SendData strdata
        SktClient收到客户端数据后,取出数据在文本框TxtClient中显示,并将数据发送给远程邮件服务器:
        SktClient_DataArrival(ByVal bytesTotal As Long)
        Dim strdata As String
        ’取出数据,放在字符串strdata中
        SktClient.GetData strdata
        '在文本框中分行显示
        TxtClient.Text=TxtClient.Text+vbCrLf+strdata
        TxtClient.Refresh
        '邮件客户端请求转发到远程服务器
        SktServer.SendData strdata
        在TCP/IP通信中,断开与连接一样由客户方发起,服务器方接收CLOSE消息,因此在SktClient_Close()中进行下列处理:
        '关闭与邮件客户端的连接
        SktClient.Close
        '关闭与远程邮件服务器的连接
        SktServer.Close
        '继续监听下一次连接请求
        SktClient.Listen
        通过分析两个文本框中的信息,可以了解邮件发送整个过程的操作。由此根据SMTP协议可分离出发信人、收信人、主题、信件编码与内容、附件编码与内容等关键信息,使之扩展为应用型代理,对邮件发送进行监控。
        POP3代理服务器的实现
        POP3代理的难点在于要支持多信箱取件,因邮件客户端程序一般支持多个POP3信箱,所以设计前要了解邮件收取的过程。邮件客户程序首先向服务器发送连接请求,服务器应答后,客户端发送USER命令传递POP3用户名,服务器确认后,客户端发送用户口令,服务器再次确认,之后进入取信操作。多个POP3信箱下,远程邮件服务器是不确定的,故POP3代理要连接的对象不定。使用POP3代理时,通常在邮件客户程序的服务器处填上代理地址,再在用户名之后加隔离符注明实际POP3服务器地址(如hzh/10.120.15.205)。下面给出其实现代码,该控件设置与SMTP代理相同。在Form_Load()中添加如下代码:
        '全局变量,1表示客户端已发出连接请求
        First = 0
        'POP3 端口号
        SktClient.LocalPort = 110
        '监听邮件客户端收取信件的连接请求
        SktClient.Listen
        SktClient收到邮件客户端请求时,远程POP3服务器地址还是未知的,不能进行连接,为使邮件客户程序继续进行操作,POP3代理必须向其发送伪应答信息:
        Sub SktClient_ConnectionRequest()
        '关闭监听,处理连接
        If SktClient.State <> sckClosed Then SktClient.Close
        ’取得连接标识
        SktClient.Accept requestID
        ’设置全局标志
        First = 1
        '向邮件客户端发送伪应答信号
        SktClient.SendData "+OK POP3 server ready" + vbCrLf
        邮件客户端收到伪应答后,接着向POP3代理发送USER命令,其中带有远程邮件服务器地址。POP3代理分离出邮件服务器地址,进行实际连接:
        Sub SktClient_DataArrival(ByVal bytesTotal As Long)
        Dim strdata,RemotePOP3Srv As String
        Dim Pos As Integer
        '取得邮件客户端发来数据
        SktClient.GetData strdata
        ’分行显示
        TxtClient.Text=TxtClient.Text+vbCrLf+strdata
        TxtClient.Refresh
        '邮件客户端发送USER命令时,POP3代理服务器解析远程服务器地址,并进行实际连接
        If Left(strdata, 4) = "USER" Then
        '找到字符"/"在串中的位置
        Pos=InStr(strdata,"/")
        '用户名,为全局变量
        UserInfo = Left(strdata,Pos)
        ’远程POP3服务器地址
        RemotePOP3Srv=Right(strdata,len(strdata)-Pos)
        SktServer.RemoteHost = RemotePOP3Srv
        'pop3端口号
        SktServer.RemotePort = 110
        ’连接远程POP3服务器
        SktServer.Connect
        ’其他情况下向服务器转发
        Else
        SktServer.SendData strdata
        End If
        远程POP3服务器收到代理的连接请求后,回送应答信息,该信息不再回传客户端。由于此时邮件客户端已经发出USER命令,POP3代理再立即将此命令补发给远程POP3服务器:
        Sub SktServer_DataArrival()
        Dim strdata As String
        ’取服务器信息
        SktServer.GetData strdata
        ’显示应答信息
        TxtServer.Text =TxtServer.Text + vbCr + strdata
        TxtServer.Refresh
        ’第一次应答
        If First = 1 Then
        ’复位标志
        First = 0
        ’补发USER命令
        SktServer.SendData userinfo + vbCrLf
        '非第一次应答
        Else
        ’转发到邮件客户端
        SktClient.SendData strdata
        End If
        其他情况下POP3代理只做信息中转并记录,通过分析两个文本框中的内容,可以了解电子邮件收取全过程的所有信息。根据POP3协议,可以分离出发信人、收信人、主题、信件编码与内容、附件编码与内容等关键信息,为实现收信监控奠定基础。
        邮件代理服务器的应用
        邮件代理服务器可分为单用户和多用户两种版本。单用户版本在某一时间只支持一个用户操作。如本文的例子,它安装在邮件客户机器上,邮件程序中服务器地址可简单设为127.0.0.1或localhost。多用户版本可同时为多个邮件客户端做代理,其思想是由父线程专门负责侦听,侦听到连接后创建一个子线程具体处理该路通信,它通常安装在服务器上,在邮件客户程序中将服务器地址指向此机器。
        要实现邮件代理服务器的应用,必须理解邮件编码格式。PC机上电子邮件的编码分两类,即UUENCODE格式和MIME格式。前者起源于UNIX系统,后者为一种多目标扩展,应用越来越广。MIME格式中,BASE64主要用于附件的编码,信件主体多使用QP、UTF-8(UNICODE)、UTF-7和HZ格式。它们具有明显的标志,判明编码格式后进行解码得到明文,处理完毕再编码转发或换码转发。应用型邮件代理服务器在实际中有十分广泛的应用,如邮件在线加密/解密、邮件过滤和病毒在线检查等。
      

  17.   

    如果是使用透明代理软件,比如sygate,我们的与外界联系的程序是不用考虑这个问题的。如何寻址是代理软件的事情。比如QQ,netant等,我们在这种情况下根本不用设置代理。就按照一般情况写c/s程序就行。当然,如果是ccproxy等代理软件,我们的程序就要有代理功能了。
      

  18.   

    你可以参考Delphi自带的例程Delphi->Demos->Internet->chat