刚开始搞socket,有些不明白的问问大家!(100分)

  • 主题发起人 主题发起人 rihua
  • 开始时间 开始时间
R

rihua

Unregistered / Unconfirmed
GUEST, unregistred user!
要达到目的如下:
远程gprs模块,通过internet tcp/ip呼叫我这里的服务器端口,然后服务器确认模块连接上之后,可以在任意时候发送命令给远程的gprs模块,然后接受gprs模块提供回的数据,在本机保存。
问题如下:
1,是不是服务器端一定要起码要有一个TcpServer和TcpClient,tcpserver负责接收数据和测试是否连通,TcpClient负责发送命令,用一个Tcpserver能实现么?
2,如果必须TcpClient,我发送命令目的地的地址端口,是不是从Tcpserver接收到的数据里能得到,具体怎么实现?
3,socket监听到底是个什么概念,是不是TcpServer.active:=true,然后就会一有数据到达,就会触发TcpServer的某个事件,具体那个事件?
上面问题可能很简单,因为我刚搞这个东西,手头资料也不多,所以很迷惑,希望大家帮我一下,先谢谢了。
 
1. 用一个TServerSocket当然可以实现
2. 忽略
3. TServerSocket.Active := True是将指定的端口打开进入监听模式,这个端口的目的也就是接受客户端地连接请求, 接受后会建立一个新的socket连接服务器与客户端,这个新socket的端口是系统动态分配的,所有和client的数据交流都通过这个新建立的socket进行。而原先的socket则继续监听。 因此TServerSocket可以认为是一个容器,他内部有一堆socket和具体的client进行连接,它本身的socket可以认为是一个模板, 供accept客户端连接时提供信息。至于TServerSocket的读写事件只不过是将内部多个socket的读写事件用一个统一的接口提供出来而已。
 
1、一个TcpServer就可以了,最好用Indy的控件,比较好用。
2、找到在TcpServer中的相应(客户端)连接,用此连接就可以给客户端发信息了。
3、监听是指监听某个端口的Socket数据,以太网中,用TCP/IP发送数据前,网卡会发出一个请求,询问目标地址网卡的Mac地址(不包括路由),如果得到回应时,会在IP包的外层封装Mac地址再发送。因为以太网卡只接受和自己Mac地址相同的包,然后将数据传到协议栈,由协议栈判断目的IP地址是否正确,再根据端口发送给应用层,这样系统就可以根据你监听的端口吧向这个端口发送的数据传输给你的程序。
 
你应该要有网络通信的基本概念知识,然后才学有关的编程,否则你会有许多本来很基本的东西就是没知道。
 
我知道我是很多基本东西,没搞清楚,有没有什么相关的知识的电子版本,给我一份好么?先谢谢了,rihua@citiz.net.
 
给你介绍几本必读的书:
1、WINDOWS 程序设计(第5版)(上、下册)
2、Delphi 5(6)开发人员指南
3、TCP-IP 详解
如果你要开发网络系统3是要看的.
 
多人接受答案了。
 
后退
顶部