客户端:
var
svrAddr :TSockAddrIn;
sid :Integer;
sbuff :array[0..11] of char;
cc :PChar;
wsaData :TWSAData;
begin
WSAStartup($0002, wsaData);
sid := socket(AF_INET, SOCK_STREAM, 0);
svrAddr.sin_family := AF_INET;
svrAddr.sin_addr.S_addr := inet_addr('127.0.0.1');
svrAddr.sin_port := htons(2577); if connect(sid, svrAddr, sizeof(svrAddr)) = SOCKET_ERROR then
begin
showMessage('Can''t connect');
exit;
end;
recv(sid, sbuff, 1024, 0);
Edit1.Text := sBuff;
shutdown(sid, 2);
closesocket(sid);
end;服务端:
var
Sid, SidNew :integer;
// svrAddr :PsvrAddr;
svrAddr :TSockAddrIn;
Plen :Pint;
len :Integer;
sbuff :array[0..11] of char;
begin
svrAddr.sin_family := AF_INET;
svrAddr.sin_addr.S_addr := inet_addr('127.0.0.1');
svrAddr.sin_port := htons(2577); Sid := socket(AF_INET, SOCK_STREAM, 0);
if bind(Sid, svrAddr, sizeof(svrAddr)) < 0 then
begin
ShowMessage('Error In Server Bind');
exit;
end; if listen(Sid, 1) < 0 then
begin
Showmessage('Error in Socket Listen');
exit;
end; len := sizeof(svrAddr);
SidNew := accept(Sid, @svraddr, @len);
if SidNew < 0 then
begin
ShowMessage('Error In Server Accept');
exit;
end; shutdown(sid, 2);
closesocket(sid);
sbuff := ‘aaa’;
send(SidNew, sbuff, 1024, 0);
shutdown(Sidnew, 2);
closesocket(sidNew);
end;客户端在读取数据完后出现存取违规错误, 通过断点调试,已成功从服务端获取数据。
var
svrAddr :TSockAddrIn;
sid :Integer;
sbuff :array[0..11] of char;
cc :PChar;
wsaData :TWSAData;
begin
WSAStartup($0002, wsaData);
sid := socket(AF_INET, SOCK_STREAM, 0);
svrAddr.sin_family := AF_INET;
svrAddr.sin_addr.S_addr := inet_addr('127.0.0.1');
svrAddr.sin_port := htons(2577); if connect(sid, svrAddr, sizeof(svrAddr)) = SOCKET_ERROR then
begin
showMessage('Can''t connect');
exit;
end;
recv(sid, sbuff, 1024, 0);
Edit1.Text := sBuff;
shutdown(sid, 2);
closesocket(sid);
end;服务端:
var
Sid, SidNew :integer;
// svrAddr :PsvrAddr;
svrAddr :TSockAddrIn;
Plen :Pint;
len :Integer;
sbuff :array[0..11] of char;
begin
svrAddr.sin_family := AF_INET;
svrAddr.sin_addr.S_addr := inet_addr('127.0.0.1');
svrAddr.sin_port := htons(2577); Sid := socket(AF_INET, SOCK_STREAM, 0);
if bind(Sid, svrAddr, sizeof(svrAddr)) < 0 then
begin
ShowMessage('Error In Server Bind');
exit;
end; if listen(Sid, 1) < 0 then
begin
Showmessage('Error in Socket Listen');
exit;
end; len := sizeof(svrAddr);
SidNew := accept(Sid, @svraddr, @len);
if SidNew < 0 then
begin
ShowMessage('Error In Server Accept');
exit;
end; shutdown(sid, 2);
closesocket(sid);
sbuff := ‘aaa’;
send(SidNew, sbuff, 1024, 0);
shutdown(Sidnew, 2);
closesocket(sidNew);
end;客户端在读取数据完后出现存取违规错误, 通过断点调试,已成功从服务端获取数据。
解决方案 »
- EhLib 导入文件wps打开变成空白的
- 请高手开发数据库系统类似MYSQL的数据库用哪种语言
- 如何连接mysql,我用的是d6啊
- 找extrapack for delphi 7的 控件
- 100分请大家推荐一个绘图的控件!
- Socket(C/S)结构中,怎么传送硬盘的大量图片(非图像),并在另一端存放于硬盘,简单否。,
- 有关图像校正的问题,请各位高手指点?
- 年终奖都没有了,吐血
- 请问如何在DELPHI中调用WIN API函数?谢谢
- **************关于事件调用的问题*****************
- 有关Indy的TIDTCPServer组件的问题,个人经验不足,请有这方面的高手帮忙,具体问题请进入。
- 求个程序实现思路
.......
sbuff :array[0..11] of char;
......
而接收时却...
recv(sid, sbuff, 1024, 0); sbuff楼主是定义在栈中的,这下子一接收就溢出,堆栈里的其它东西被破坏.