请教各位网友,问个Delphi下TCP/IP的问题(50分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
一:在Delphi的TCP/IP编程中(我们以TClientSocket为例),它的port(端口)与
TCustomWinSocket下的socket有什么区别?如我们在OnWrite事件中向socket
发送信息,在OnRead事件中从socket读取信息,此时的socket是不是就是上面的
port(端口)?如不是,那此时的socket究竟是个啥,我们从socket发送、读取
的信息究竟是放在哪里?此时的socket是在本地,还是在远程服务器?
二:我在LAN中,设置address为LAN中的WEB服务器,service='http',当我在OnRead事件
中没有接收到任何信息(用socket.ReceiveText,并已经连接成功),这是为何?
三:有没有从socket中读取、发送16进制的命令(我只发现socket.SendText、socket.ReceiveText
读取、发送文本的命令)?
谢谢。
 
找本有关TCP/IP的书先看看
 
一、socket 是套接字,形象地就是一个管道
二、web服务器过来的http头已经被套接字解释好了,才会有连接成功的标志,
至于其他信息,需要在发请求,服务器端才响应
三、字符(您说的文本中的最小)跟16进制字节本身在存储上没有差别
 
1、不好说。你就有一个地址(当然也可能有几个,那个更复杂,先不用管了),可是很多程序要
通讯,就用不同端口了。 socket你就理解为句柄差不多的就可以啦,反正是不是句柄也用不
上,总之标志你的一个链接
2、http没有一般没有在services定义(ftp、telnet等等都有,就http没有),所以不能把
http 当service,(service和端口port就是一个东西,只是一个是名字,一个是数字,
就好象 Host: www.microsoft.com 和 Address 207.46.130.14 一样)
http如果没有说都是80端口,你就填80好了
3、delphi中string可以包含任何字符,包括0,所以可以用string发二进制数据
 
3)从socket中读取、发送16进制的命令
socket.send即可
 
他们说的都错,错,错!在delphi的OnRead和OnWrite事件中,
参数Socket指的是接到或者发出的tcp包!!!
无论是ClientSocket或者ServerSocket都有一个Socket属性,
这个属性的含义也是这样的,
Windows的Socket被Delphi中的Port代替了。
要搞懂Delphi的tcp,最好是看一下示例:
demos/internet/chat.dpr,
看了就懂了
 
什么 Windows的Socket被Delphi中的Port代替了
我觉得很有问题
 
在Windows API中Socket指的是调用建立tcp连接的时候得到的一个
端口号,而在delphi中这一名次被用port来描述了,这是个整数类型的值.
 
port和socket是不同的东西
ftp服务的端口号是21,telnet服务的端口号是23,web服务缺省端口号是80
不管在delphi还是windows api还是其他什么东西,socket和port都是有的,是
两种不同的东西。
 
一, Socket=IP+Port;
TCustomWinSocket下的socket是建立好的连接,与
Tclientsocket和Tserversocket的socket不是一回
事,socket并非在本地,也不在远程服务器,是两者
的管道。在OnWrite事件中向socket发送信息,
在OnRead事件中从socket读取信息,用的有当前刚有事件
响应的连接,一旦连接已经成功,就会有唯一的标识来
标志此连接。
二, 估计要做一个接受器,把收到的信息解释出来
三, 传送2进制或16进制都可以用Sendbuf这个命令的。
 
接受答案了.
 
后退
顶部