求一个socket服务器监听端口的delphi源码,最好是用api函数写的,控件做的也行,贴到这里或者发到[email protected]里均可,能实现就给分!
解决方案 »
- 请教一个编程逻辑问题!
- Delphi中将数据导入到Excel中的问题
- Express控件组中,TcxLabel控件在哪个组中,需要安装哪个控件?
- 子组件 想使用 父组件的 事件 要怎么写?
- 数据库查询问题,详情请进。
- 这是一个其它地方常见的钩子程序,为什么不能正确运行?请帮忙看看
- [Fatal Error] Required package 'dxPScxGridLnkD7' not found
- 哪里有ddExpress for Access的驱动程序?
- 有关crc问题?
- 求救,请教高手!
- 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