求一个socket服务器监听端口的delphi源码,最好是用api函数写的,控件做的也行,贴到这里或者发到[email protected]里均可,能实现就给分!
解决方案 »
- 郁闷了很久的问题!说难应该不难!应该是没有找到方法!
- delphi 中 怎么去掉StringGrid组件左边和 上边的框框 ?
- 如何在一个字段中取自己想要的子字段!!求教各位大侠帮忙啦!
- 如果实现自动获取网页中指定的字符串?请高手帮忙!
- InstallShield Developer 8.02如何支持中文?
- 怎样删除用户通过Edit1.text指定“姓名”的记录
- 公司发下任务,请cddn里delphi兄弟,帮帮忙
- 请各位大姥给个水晶报表的delphi开发控件Crystal Report VCL
- 如果在一个表中使用了触发器,如何在Delphi中判断这个触发器是否进行了回滚操作?
- 请问在多表关联查询中,在追加提交时如何只追加其中的一个表?
- delphi2005 真是不爽. 面目全非, 和微软的 vs 一样了. 最恶心的就是那个 Tool Palette.
- 一个菜鸟的问题!!
procedure TGMain.N2Click(Sender: TObject);
var
Fsession : TWSAdata;
protoent : PProtoEnt;
saddr : TsockAddrIn;
begin
try
//WSAstartup
if(WSAstartup(Makeword(2,2),Fsession)<>0) then
begin
showmessage('初始化winsock动态连接库失败');
Exit;
end;
protoent:= getprotobyname('udp'); saddr.sin_family := AF_INET;
saddr.sin_port := htons(lport);
saddr.sin_addr.S_addr := htonl(INADDR_ANY); //create socket
Fsocket := socket(PF_INET,SOCK_DGRAM,protoent^.p_proto);
if Fsocket = INVALID_SOCKET then
begin
showmessage('建立socket失败');
Exit;
end
else if(Fsocket>=0) then //bind
begin
if Bind(Fsocket,saddr,sizeof(saddr))= SOCKET_ERROR then
begin
showmessage('绑定socket失败');
end
else
begin
GMain.Memo1.Lines.Add('Start');
GprsThread := TudpThread.Create(false);
end;
end;
Except
end;
end;
----------------------
接收:
RecLen := recvfrom(FSocket,RecBuf,512,0,Client,SAddrLen);
if(RecLen>0)
...
-------------------
发送:
var
Client : SockAddr_In ;
...
Client.sin_family := AF_INET;
Client.sin_port := htons(10000);
Client.sin_addr.S_addr := inet_addr('192.168.0.13');
...
sAddrLen := sizeof(Client);
sndLen := sendto(FSocket,SndBuf,512,0,Client,sAddrLen); //512是buf的长度
if(SndLen<0) then
..
else