「 C++ 通讯 」“TCP/IP通讯的本地通讯地址”浅谈
Robot_Starscream
原创人工智能领域优质创作者
关注
4点赞·1564人阅读
一、前言
程序员在程序进行时,往往会将 服务器 和 客户端 放在同一台电脑脑上测试通讯。
二、讲解
将客户端中的IP地址位设置如下即可。
TCP/IP通信,本地通讯地址为:
"127.0.0.1"
注意:服务器与客户端的端口号,必须一致。
1、点开“开始”,“打印机和传真”。2、选择“添加打印机”。我们选择“连接到此计算机的本地打印机”,不勾选“自动检测并安装即插即用打印机”。3、选择“创建新端口”,并把下拉框选成“StandardTCP/IPPort”,最后单击“下一步”。
4、在“打印机名或IP地址”栏里输入打印机的IP地址(这个IP地址可以在打印机上查看;或者在别的能连上打印机的电脑查看;或者按打印机说明书上的步骤让打印机打印一张测试页,测试页上会有打印机IP地址)。
5、选择“标准”,“下一步”。
6、选择打印机的驱动程序,左边栏目里先选打印机厂商,然后在右边选择打印机的具体型号。
7、如果里面没有所需要的型号,就选择从磁盘安装,然后选中对应打印机的驱动即可。
TCP/IP协议的传输即面向点到点的传输方式!
创建应用程序
选择 NEW 菜单下的 Application 选项 创建一个普通的应用程序
创建所需控件
首先在控件栏的Win 页中选择ImageList控件和CoolBar控件 再从Win 栏选择ToolBar控件放置到CoolBar 控件上 用鼠标右键单击 ImageList 控件 在d出的菜单中选择 ImageList Editer 选项 d出 ImageList Editer 对话框 单击 Add 按钮 选择 幅位图 在对象管理器Object Inspector中将ToolBar控件的Image属性设为 ImageList 用鼠标右键单击 ToolBar 控件 选 New Button 选项 总共创建 个ToolButton 在 对象管理器中将 个ToolButton的ImageIndex属性分别设置为 此时ImageList控件中的 幅位图将会分别显示在Toolbutton上 将 个ToolButton控件的ShowHint属性全都设置为 ture 并将它们的Hint属性分别设置为 监听 连接 断开连接 更改你的昵称 和 退出聊天程序
然后在窗体中放置一个Edit控件 Memo控件 StatusBar控件和一个Label控件 将Label控件的Caption属性设置为 输入框 最后 也是最关键的 在控件栏的Internet页中选择SeverSocket控件和ClientSocket控件放置在窗体中 将SeverSocket控件和ClientSocket控件的Port属性设置为 SeverSocket控件是基于TCP/IP协议传输的服务器方的控件 它的主要作用是用来监听其它基于TCP/IP传输计算机的连接请求 并在收到连接请求时建立连接 进行数据传输 ClientSocket控件是基于TCP/IP传输的客户方的控件 它的主要作用是向监听 TCP/IP传输的服务器发出连接请求 在收到服务器的允许连接的响应后 建立连接 并传输数据 之所以在窗体中同时创建ServerSocket和ClientSocket控件 是因为应用程序既可作为服务器 又可作为客户端使用
Serversocket和ClientSocket之间的连接
首先设置两个全局变量
NickName:string
b_Client:boolean
其中NickName用于放聊天人的名称 b_Client用于表明应用程序是否作为客户端进行数据传输
在窗体Form 的Oncreate事件中初始化变量 代码如下
procedure TForm FormCreate(Sender:TObject)
begin
NickName:+= 我的昵称
b_Client:=ture
end
双击ToolButton 编写服务器监听代码如下
procedure TForm Toolbutton Click(Sender:TObject)
begin
ClientSocket close
ServerSocket open
StatusBar SimpleText:= 开始监听
end
双击ToolButton 编写客户的申请连接 代码如下
procedure TForm ToolButton Click(Sender:TObject)
var s:string
begin
if Clientsocket Active then
ClientSocket close
if InputQuery( 连接到计算机 要连接的计算机名称或IP地址 s) then
if Length(s)>then
with ClientSocket do
begin
Host:=s
open
end
end
在对象管理器中 双击ClientSocket事件页的OnConnecting事件 编写处理客户等待连接请求 代码如下
procedure TForm ClientSocket Connecting(Sender:TObjectSocket:TCustomWinSocket)
begin
StatusBar SimpleText:= 等待来自 +Socket RemoteAddress+ 的连接允许响应
end
在对象管理器中 双击SeverSocket事件页的OnAccept事件 处理服务器响应连接事件 代码如下
procedure TForm SeverSocket Accept(Sender:TObjectSocket:TCustomWinSocket)
begin
b_Client:=false
StatusBar SimpleText:= 连接到 +Socket RemoteAddress
end
在对象管理器中 双击ClientSocket事件页的OnConnect事件 OnConnect事件在连接成功时被调用 代码如下
procedure TForm ClientSocket Connect(Sender:TObjectSocket:TCustomWinSocket)
begin
b_Client:=ture
StatusBar SimpleText:= 连接成功
end
ServerSocket和ClientSocket之间的数据传输
聊天的内容是通过Edit控件输入并在敲回车键后显示在Memo控件中 再传输到与之连接的计算机中 Edit的OnKeyDown事件代码如下
procedure TForm Edit KeyDown(Sender:TObjectvar Key:WordShift:TShiftState)
begin
if Key=VK_Return then
begin
Memo Lines Add(NickName+ : +Edit Text
if b_Client then
ClientSocket Socket SendText(Memo Lines[Memo lines Count ])
else
ServerSocket Socket Connections[ ] SendText(Memo Lines[Memo lines Count ])
end
end
在ServerSocket控件的onread事件中编写服务器接收到数据后的动作 代码如下
procedure TForm ServerSocket ClientRead(Sender:TObjectSocket:TCustomWinSocket)
begin
Memo lines Add(Socket ReceiveText)
end
在ClientSocket控件的onread事件中编写客户端接收到数据后的动作 代码如下
procedure TForm ClientSocket Read(Sender:TObjectSocket:TCustomWinSocket)
begin
Memo lines Add(Socket ReceiveText)
end
断开Serversocket和ClientSocket之间的连接
双击ToolButton 编写客户端断开的处理过程 代码如下
procedure TForm ToolButton Click(Sender:TObject)
begin
ClientSocket close
StatusBar SimpleText:= 断开连接
end
编写服务器响应客户端断开的处理过程 代码如下
procedure TForm ServerSocket ClientDisconnect(Sender:TObjectSocket:TCustomWinSocket)
begin
SeverSocket close
StatusBar SimpleText:= 断开连接
end
更改聊天者的昵称
双击Toolbutton 编写更改昵称代码如下
procedure TForm ToolButton Click(sender:TObject)
var
s:string
begin
if InputQuery( 更改昵称 你的新昵称 s) then
if Length(s)>then
NickName:=s
end
退出应用程序
双击Toolbutton 编写退出应用程序代码如下
procedure TForm ToolButton Click(sender:TObject)
ClientSocket close
ServerSocket close
Form close
end
保存并运行应用程序
lishixinzhi/Article/program/Delphi/201311/25042
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)