都是在DELPHI 7控制台程序下编写的。就是客户端根本收不到服务器端的消息。
真是头疼,请大家帮忙,不然可能就学习部下去了。我已经弄了一晚上了
首先是服务器端的代码:
program Project1;{$APPTYPE CONSOLE}uses
SysUtils,
WinSock,
windows;Var
s,cs :TSocket;
w :WsaData;
version :Word;
sin,rsin :sockaddr_in;
n :integer;
b :pchar;
begin
version :=makeword(2,2);
WSAStartUp(Version,w);
sin.sin_family :=af_inet;
sin.sin_port :=htons(4567);
sin.sin_addr.S_addr :=inaddr_any;
socket(s,sock_stream,0);
bind(s,sin,SizeOf(sin)); listen(s,2); n :=SizeOf(rsin);
getmem(b,5);
b :='12345'; while true do
begin
cs :=accept(s,@rsin,@n);
if cs=invalid_socket then
continue
else
begin
if send(cs,b,strlen(b),0)=SOCKET_ERROR then
Writeln('send error'); closesocket(cs);
break;
end;
end;
closesocket(s);
readln;
end.
然后是客户端的代码:
program Project2;{$APPTYPE CONSOLE}uses
SysUtils, winsock,windows;var
s :TSocket;
w :WsaData;
version :Word;
sin :sockaddr_in;
b :pchar;
begin { TODO -oUser -cConsole Main : Insert code here }
version :=makeword(2,2);
{ TODO -oUser -cConsole Main : Insert code here }
WSAStartUp(Version,w);
socket(s,sock_stream,0);
sin.sin_family :=af_inet;
sin.sin_port :=htons(4567);
sin.sin_addr.S_addr :=inet_addr('127.0.0.1'); connect(s,sin,Sizeof(sin));
getmem(b,5);
b :='00000';
recv(s,b,strlen(b),0); writeln(b);
closesocket(s);
readln;
end.
真是头疼,请大家帮忙,不然可能就学习部下去了。我已经弄了一晚上了
首先是服务器端的代码:
program Project1;{$APPTYPE CONSOLE}uses
SysUtils,
WinSock,
windows;Var
s,cs :TSocket;
w :WsaData;
version :Word;
sin,rsin :sockaddr_in;
n :integer;
b :pchar;
begin
version :=makeword(2,2);
WSAStartUp(Version,w);
sin.sin_family :=af_inet;
sin.sin_port :=htons(4567);
sin.sin_addr.S_addr :=inaddr_any;
socket(s,sock_stream,0);
bind(s,sin,SizeOf(sin)); listen(s,2); n :=SizeOf(rsin);
getmem(b,5);
b :='12345'; while true do
begin
cs :=accept(s,@rsin,@n);
if cs=invalid_socket then
continue
else
begin
if send(cs,b,strlen(b),0)=SOCKET_ERROR then
Writeln('send error'); closesocket(cs);
break;
end;
end;
closesocket(s);
readln;
end.
然后是客户端的代码:
program Project2;{$APPTYPE CONSOLE}uses
SysUtils, winsock,windows;var
s :TSocket;
w :WsaData;
version :Word;
sin :sockaddr_in;
b :pchar;
begin { TODO -oUser -cConsole Main : Insert code here }
version :=makeword(2,2);
{ TODO -oUser -cConsole Main : Insert code here }
WSAStartUp(Version,w);
socket(s,sock_stream,0);
sin.sin_family :=af_inet;
sin.sin_port :=htons(4567);
sin.sin_addr.S_addr :=inet_addr('127.0.0.1'); connect(s,sin,Sizeof(sin));
getmem(b,5);
b :='00000';
recv(s,b,strlen(b),0); writeln(b);
closesocket(s);
readln;
end.
解决方案 »
- 关于电信网上营业系统的问题
- 存储空间的计算?
- Clientdataset + DBGrid 实现多表头...
- 问个简单的问题,怎么给做好的delphi程序做个安装程序,delphi自带的有吗,在哪里,没有的话,怎么安装
- 如何学习WebSnap啊!那里有教程下载。
- 初学这的问题:
- 大家谈谈李维同志的那本delphi5.x电子商务篇
- VCL中ADO数据集组件的问题
- 熟悉ado的朋友请您帮帮忙。急!!!急!!!急!!!
- 集思广益,如何保护注册表不被修改?
- delphi程序正在发送一个输入同步呼叫,无法执行传出的呼叫,如何解决?
- delphi调用VC的DLL,传入char* 对char*中的内容进行更改
http://www.delphifans.com/SoftView/SoftView_836.html
http://www.ahjoe.com/source/srcdown.asp
我在本机测试通过的。可以连接,发送接收消息,但是在本机外的其他朋友机里面就连接不到,
要是连接上,接收传递文字不是问题。我的帖子里有源码,可以参考下。http://topic.csdn.net/u/20090817/14/da51a948-7ade-4892-b49a-00c2d9c6a890.html?68517标题是: delphi 利用indy简单构建通讯的问题