1000分求用API写的WINSOCK2编程代码 ( 积分: 200 )

  • 主题发起人 主题发起人 hhero
  • 开始时间 开始时间
H

hhero

Unregistered / Unconfirmed
GUEST, unregistred user!
我1000分求一个代码范例
要求实现一个简单的用API实现的WINSOCK2编写的客户端和服务端
能实现客户端和服务端用WSASEND 和WSARECV接发消息就OK,
这里我只能开200分,可以另开贴给分,也可直接联系我QQ:247089
 
我1000分求一个代码范例
要求实现一个简单的用API实现的WINSOCK2编写的客户端和服务端
能实现客户端和服务端用WSASEND 和WSARECV接发消息就OK,
这里我只能开200分,可以另开贴给分,也可直接联系我QQ:247089
 
我不会,帮你提前.
 
谢谢,没人愿意赐教吗
 
服务端
var
buff:WSABUF;
RecvBytes:DWORD;
tBuff:Array[0..8196] of Byte;
hRet:Integer;
Data: WSAData;
Addr: sockaddr_in;
AcceptSocket:Socket;
begin
WSAStartup(MakeWord(2,2), WSAData);
m_Socket := WSASocket(AF_INET, SOCK_STREAM ,0,nil,0,0);
if m_Socket=INVALID_SOCKET then
Exit;
Addr.sin_family := AF_INET;
Addr.sin_addr.s_addr := htonl(INET_ANY);
Addr.sin_port := htons(8000);
bind(m_Socket,@Addr,Sizeof(Addr));
Listen(m_Socket,5);
While true do
begin
AcceptSocket:=WSAAccept(m_Socket,nil,nil,nil,0);
if AcceptSocket=INVALID_SOCKET then
Exit;
Buf.Buf:=tBuf;
Buf.Len:=8196;
hRet:=WSARecv(AcceptSocket,@Buf,1,RecvBytes,0,nil,nil);
{做你的处理部分}
{发送数据到客户段使用WSASend,Socket参数使用AcceptSocket}
end;
closesocket(m_Socket);
WSACleanup();
end;

客户端
var
buff:WSABUF;
SendBytes,Flag:DWORD;
tBuff:Array[0..8196] of Byte;
hRet:Integer;
Data: WSAData;
Addr: sockaddr_in;
AcceptSocket:Socket;
begin
WSAStartup(MakeWord(2,2), WSAData);
m_Socket := WSASocket(AF_INET, SOCK_STREAM ,0,nil,0,0);
if m_Socket=INVALID_SOCKET then
Exit;
Addr.sin_family := AF_INET;
Addr.sin_addr.s_addr := inet_addr('127.0.0.1');
Addr.sin_port := htons(8000);
connect(m_Socket,@Addr,Sizeof(Addr));
Buf.Buf:=tBuf;
Buf.Len:=8196;
{做你的处理部分}
hRet:=WSASend(AcceptSocket,@Buf,1,SendBytes,Flag,nil,nil);
if hRet=Socket_Error then
Exit;
{做你的处理部分}
{从服务端接收数据使用WSARecv使用方法参考服务端}
end;
closesocket(m_Socket);
WSACleanup();
end;
以上代码没有测试,不过应该不会有大的问题:).
 
其实以前已经有类似的问题的答案。而且现在网上此类代码也不少。去找找看吧
 
我先看下,成功后就给分
 
to LINZONGM:
在吗,再请问个问题,我通过知道服务端候向客户端发送了消息呢
 
to AppFirst 我先给分吧,可以的话在回答我这个问题:
我通过知道服务端候向客户端发送了消息呢
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3006629
AppFirst来此接分
 
后退
顶部