46 lines
924 B
D
46 lines
924 B
D
#!dmd -run
|
|
|
|
import core.thread;
|
|
import std.stdio;
|
|
import std.socket;
|
|
import std.conv;
|
|
import std.utf;
|
|
import std.string;
|
|
|
|
string receiveWait(Socket sock){
|
|
bool blocking = sock.blocking;
|
|
|
|
sock.blocking = false;
|
|
ubyte[] rawData;
|
|
ubyte[256] buf;
|
|
int recv;
|
|
while((recv = sock.receive(buf))>=0 || rawData.length==0){
|
|
if(recv>0){
|
|
rawData ~= buf[0..recv];
|
|
}
|
|
|
|
Thread.sleep(dur!"msecs"(10));
|
|
}
|
|
sock.blocking = blocking;
|
|
return (cast(char*)rawData.ptr).fromStringz.to!string;
|
|
}
|
|
void sendWait(Socket sock, string data){
|
|
bool blocking = sock.blocking;
|
|
|
|
sock.blocking = true;
|
|
sock.send(data.toUTF8);
|
|
sock.blocking = blocking;
|
|
}
|
|
|
|
void main() {
|
|
writeln("Start");
|
|
auto sock = new TcpSocket;
|
|
sock.blocking = true;
|
|
sock.connect(new InternetAddress("127.0.0.1", 8080));
|
|
writeln("Connected");
|
|
|
|
sock.sendWait(`{"action":"bind","target":"testnpc"}`);
|
|
writeln(sock.receiveWait);
|
|
|
|
sock.shutdown(SocketShutdown.BOTH);
|
|
} |