delphi Tidtcpserver 和Ttcpserver区别
没啥大区别 反正都是建立socket server的 我反而用Tserversocket较多 delphi7有 但默认不安装 官方自己也推荐indy的较好 所以很少有人用TcpServer。

TCP/IP/UDP Client和Server之间的关系是什么?
TCP/IP的通讯协议这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。【TCP与UDP的区别】TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

请问串口服务器的TCP Server和TCP Client两种模式的具体使用场景
TCP Server是服务器端 TCP Client是客户端

delphi 7中tcpserver 和 tcpclient的运用
procedure TForm1.TcpServer1Accept(Sender: TObject; 里面也是死循环来处理消息。直到你终止。while ClientSocket.connected do tcpclient1 也是类似的,用单独的线程死循环来处理接收的消息。 只有发送消息就无所谓

Delphi中的TcpServer和TcpClient以及UdpSocket的问题
在建立连接完成的事件里面把socket保存起来,S->C的时候找对应C的那个Socket就可以发送啊,至于怎么保存,建议是用TList+自定义一个结构体。 1 连接请求使用了.NET类中的 System.Net.Sockets.TcpClient类,TcpClient(string hostname,int port)Hostname 是要控制的主机名称,当然你也可以用IP地址。Port是端口。// System.EventArgs包含事件数据类的基类private void button7_Click(object sender, System.EventArgs e){//记录操作,在richTextBox控件中增加操作信息richTextBox1.AppendText("请求连接" +textBox1.Text +"r");int port =6678;try{//初始化 TcpClient 类的新实例并连接到指定主机上的指定端口client = new TcpClient(textBox1.Text,port);}catch{MessageBox.Show("服务器不在线!确定是否输入主机名称.");richTextBox1.AppendText("服务器不在线!确定是否输入主机名称.");}}//private void buttion2测试是否与被控制机连接上。程序的流程是发送控制码看控制端是否有反应,如果有返回则显示控制成功。//提供网络访问的数据流//private NetworkStream stream;代码如下:private void button8_Click(object sender, System.EventArgs e){//纪录操作richTextBox1.AppendText("测试连接" +"r");try{stream = client.GetStream();if(stream.CanWrite){//发送控制码string control = "jiance";byte[] by =System.Text.Encoding.ASCII.GetBytes(control.ToCharArray());stream.Write(by,0,by.Length);//下次使用stream.Flush();//启动接收反回数据的线程//receive是线程执行的函数,见后面的分析threadReceive = new Thread(new ThreadStart(receive));threadReceive.Start();}}catch(Exception ee){richTextBox1.AppendText (ee.Message+"r");MessageBox.Show(ee.Message);}}3控制生效的代码private void button9_Click(object sender, System.EventArgs e){//这里是确定要发送的控制码,RadioButton是窗体控件if(radioButton1.Checked){ control = form2.zhucex;}else if(radioButton2.Checked){ control =form3.zhuces;}else if(radioButton3.Checked){ control = warring;}else if(radioButton4.Checked){ control =suggest;}else if(radioButton5.Checked){ control =form4.mumawe;}else if(radioButton6.Checked){ control =drop;}if (control =="000000"){MessageBox.Show("你没有输入任何控制目标!不发控制信号");richTextBox1.AppendText("你没有输入任何控制目标!不发控制信号");}else if(control != "000000"){try{//记录操作richTextBox1.AppendText (control + "正在试图控制,等待回应......" + "r");stream = client.GetStream();if(stream.CanWrite ){byte[] by = System.Text.Encoding.ASCII.GetBytes(control.ToCharArray ());stream.Write(by,0,by.Length);stream.Flush();threadReceive =new Thread(new ThreadStart(receive));threadReceive.Start();}//endif}//trycatch{richTextBox1.AppendText("服务器未连接1控制无效!" +"r");MessageBox.Show("服务器未连接1控制无效!" +"r");}}//else if}4线程执行的函数private void receive(){//设置读取数据的空间byte[] bb = new byte[3];//读取3个字节,i为实际读取的字节数int i = stream.Read(bb,0,3);//转换成字符串,如果是中文控制码则用string ss = //System.Text.Encoding.Unicode.GetString(bb);string ss = System.Text.Encoding.ASCII.GetString(bb);//hjc为我设置的服务器的返回码 hjc为连接成功,hkz为控制成功if(ss=="hjc"){MessageBox.Show("连接成功");richTextBox1.AppendText("连接成功");}if(ss== "hkz"){richTextBox1.AppendText(control +"控制成功"+"r");MessageBox.Show(control +"控制成功"+"r");} }
加510761049,不踩我的,我也不告诉你,150分也不是你的了

本文由 在线网速测试 整理编辑,转载请注明出处。