一个非常简单的用api写的socket读写过程, 它连接本机1000端口, 成功的话发送一个字符串"Hello World!", 然后从服务器接收最多1k数据并用showmessage显示收到的内容, 最后关闭连接:<br>uses<br> winsock, ...;<br>var<br> wdata: TWSAData;<br> Sock: Integer;<br> Addr: TSockAddrIn;<br> sendbuf: string;<br> recvbuf: string;<br> l: Integer;<br>begin<br> WSAStartup($0101, wdata); // 初始化 winsock 1.1<br> Sock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // 创建 socket<br> try<br> if Sock > 0 then<br> begin<br> {初始化要连接的地址}<br> Addr.sin_family := 2;<br> Addr.sin_addr.s_addr := inet_addr('127.0.0.1');<br> Addr.sin_port := htons(1000); // 端口1000<br> {建立连接}<br> if connect(sock, addr, sizeof(addr)) then<br> begin<br> sendbuf := 'Hello World!';<br> // 发送数据<br> if send(sock, sendbuf[1], length(sendbuf), 0) < 0 then<br> raise exception.create('错误');<br> setlength(recvbuf, 1024); // 设置接收缓冲区<br> // 准备接收数据<br> l := recv(sock, recvbuf[1], length(recvbuf), 0); // 最多一次接受1k数据<br> if l > 0 then<br> begin<br> setlength(recvbuf, l);<br> showmessage(recvbuf);<br> end;<br> end;<br> end;<br> finally<br> closesocket(sock);<br> wsacleanup;<br> end;<br>end;