请看我写的一个服务器和客户端通过TCP传递文字的例子,问题在哪里?情大家帮忙,我已经弄了一晚上了。

雨过天晴&霁 2009-06-14 08:53:48
都是在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.
...全文
83 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lypp07 2009-08-17
  • 打赏
  • 举报
回复
我和楼主的问题有点互补,,我是用Indy ClientSocket和Indy ServerSocket的VCL第三方控件
我在本机测试通过的。可以连接,发送接收消息,但是在本机外的其他朋友机里面就连接不到,
要是连接上,接收传递文字不是问题。我的帖子里有源码,可以参考下。

http://topic.csdn.net/u/20090817/14/da51a948-7ade-4892-b49a-00c2d9c6a890.html?68517

标题是: delphi 利用indy简单构建通讯的问题


shuihan20e 2009-08-12
  • 打赏
  • 举报
回复
捕获下错误
Winmillion 2009-08-12
  • 打赏
  • 举报
回复
建议使用Indy ClientSocket和Indy ServerSocket的VCL第三方控件
c9cad 2009-06-23
  • 打赏
  • 举报
回复
防火墙有没有关掉啊
stop326 2009-06-23
  • 打赏
  • 举报
回复
UPUP
雄牛 2009-06-23
  • 打赏
  • 举报
回复


......路过,友情UP......
ahjoe 2009-06-23
  • 打赏
  • 举报
回复
刚才写了个, 源代码下载
http://www.ahjoe.com/source/srcdown.asp

shuihan20e 2009-06-23
  • 打赏
  • 举报
回复
创建socket,bind,listen,accept都没有捕获错误,你捕获错误试下,是不是有失败的
ahjoe 2009-06-23
  • 打赏
  • 举报
回复
建议用成品的组件,比如TServerSocket,TClientSocket
hongqi162 2009-06-23
  • 打赏
  • 举报
回复
起步再高一点,使用delphi7带的indy组件实现网络文件传输,里面包括了传送字符串


http://www.delphifans.com/SoftView/SoftView_836.html
雨过天晴&霁 2009-06-15
  • 打赏
  • 举报
回复
没人帮忙啊
雨过天晴&霁 2009-06-14
  • 打赏
  • 举报
回复
在本机调试的。127.0.0.1
happysalay 2009-06-14
  • 打赏
  • 举报
回复
最好用现在的客户端和服务端调一下,看看是哪边出的问题。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧