delphi局域网通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi局域网通信相关的知识,希望对你有一定的参考价值。
局域网内实现即时通信,delphi7.0能通过的代码,越简单越好,局域网内2台电脑能通信就行。线上等,感谢高手帮忙,复制的和我一样的新手就免了。谢谢!
用TIdUDPServer控件实现//窗体创建时候初始化
procedure TForm1.FormCreate(Sender: TObject);
begin
IdUDPServer1.DefaultPort := 8888; //设定本机端口号
IdUDPServer1.Active := true; //开启本机IdUDPServer
memo1.Lines.Clear;
end;
//发送
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdUDPServer1.Send(对方IP, 对方端口号, memo1.lines.text);
except
on e:exception do
showmessage('发送出错:' + e.Message + #13#10);
end;
showmessage(‘发送成功');
memo1.lines.clear;
end;
//接收
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
tmpstr: string;
i, isize: integer;
bBuffer: array of Byte;
begin
tmpstr := '';
isize := AData.Size;
setlength(bBuffer, isize);
AData.ReadBuffer(bBuffer[0], isize);
for i:= 0 to isize - 1 do
begin
tmpstr := tmpstr + chr(bBuffer[i]);
end;
tmpstr := tmpstr + #13#10 + '------------来自 ' + ABinding.PeerIP + ':' + inttostr(ABinding.PeerPort);
memo1.Lines.Add(tmpstr + #13#10);
edit2.text := ABinding.PeerIP; //如果要在对方ip的文本框里面自动记录的话,可以用这句
end;
//退出时候顺便告知另一台机子已退出
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
try
IdUDPServer1.Send(对方ip, 对方端口, '※对方已退出会话');
except
on e:exception do
showmessage('发送出错:' + e.Message);
end;
IdUDPServer1.Active := false;
end;
//更细的一些内容可自行修改下,大致功能就上述这些,另一台通信计算机的编辑也可用同一个程序 参考技术A 具体语句是:
<%
Strfolder = Request.Form("newsDate")
set fso=Server.CreateObject("Scripting.FileSystemObject")
set objfolder = fso.CreateFolder(Server.mappath(Strfolder))
dim Rs5_total
Rs5_total = 1
%>
错误语句是:
set objfolder = fso.CreateFolder(Server.mappath(Strfolder))本回答被提问者采纳 参考技术B 给你个建议,用seversocket和clientsocket控件,在网上搜一下说明,很简单,就是杀毒软件会报警
树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)
参照:树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)
作者:图触靓
发布时间: 2020-07-26 21:50:39
网址:https://blog.csdn.net/bhbhhyg/article/details/107599915
跑Linux的树莓派可以通过路由器来与wemos版进行局域网内通信:
核心思想是linux下的socket网络编程,树莓派作为客户端,wemos作为服务器。
wemos版作为服务端代码:
-
#include <ESP8266WiFi.h>
-
char ssid[] =
"路由器名称";
-
char passwd[] =
"密码";
-
-
void initWifiSta()
-
{
-
WiFi.mode(WIFI_STA);
// 设置STA模式
-
WiFi.begin(ssid, passwd);
//连接网络
-
while (WiFi.status() != WL_CONNECTED) {
-
Serial.print(
".");
-
delay(
500);
-
}
-
Serial.println(WiFi.localIP());
-
//通过串口打印wemos的IP地址192.168.200.110
-
delay(
500);
-
-
}
-
int port =
8888;
//端口号
-
WiFiServer server(port);
// 设置服务器端口号
-
void setup() {
-
Serial.begin(
115200);
-
initWifiSta();
-
pinMode(D2,OUTPUT);
-
digitalWrite(D2,HIGH);
-
-
}
-
void loop() {
-
WiFiClient client = server.available();
-
server.begin();
//服务初始化
-
while (client.connected()) {
-
while (client.available() >
0) {
-
char cmd = client.read();
//从客户端读取数据
-
Serial.println(cmd);
-
if(cmd==
49)
-
{
-
digitalWrite(D2,LOW);
-
}
-
else
if(cmd==
50)
-
{
-
digitalWrite(D2,HIGH);
-
}
-
-
}
-
}
-
-
-
}
树莓派作为客户端与wemos连接代码:
-
#include<netinet/in.h>
-
#include <arpa/inet.h>
-
#include<stdio.h>
-
#include<stdlib.h>
-
#include<string.h>
-
#include<unistd.h>
-
int main(int argc,char **argv){
-
char readbuf[
2];
-
char ch[
128];
-
if (argc!=
3)
-
{
-
printf(
"input not good\\n");
-
exit(
-1);
-
}
-
int fd_a;
-
int s_fd=socket(AF_INET, SOCK_STREAM,
0);
//配置通信模式
-
if (s_fd==
-1)
-
{
-
perror(
"socket");
-
exit(
-1);
-
}
-
struct sockaddr_in addr;
-
struct sockaddr_in addr1;
-
memset(&addr,
0,
sizeof(struct sockaddr_in));
-
addr.sin_family=AF_INET;
-
addr.sin_port=htons(atoi(argv[
2]));
-
inet_aton(argv[
1],&addr.sin_addr);
-
-
if(connect(s_fd,(struct sockaddr *)&addr,
sizeof(struct sockaddr))==
-1)
//连接wemos版
-
{
-
perror(
"connect");
-
exit(
-1);
-
}
-
while(
1){
-
printf(
"请输入发送的指令\\n");
-
gets(readbuf);
-
puts(readbuf);
-
write(s_fd,readbuf,
strlen(readbuf));
//向wemos版发送信息
-
}
-
return
0;
-
}
编译完成后,输入wemos的ip地址(X输入地址),和对应的端口号(A输入端口号),即可连接上wemos版,对其单向通信。
可以通过发指令无线操控wemos版进行工作。
以上是关于delphi局域网通信的主要内容,如果未能解决你的问题,请参考以下文章