forked from aidanf/gqserv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gqservExample.java
104 lines (85 loc) · 2.46 KB
/
gqservExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import java.io.*;
import java.net.*;
public class gqservExample{
// Use the functions readns and writens in your own programs
public static void writens(Socket sock,String command){
//given a socket and a command, write the command to
//the socket in netstring format
try{
PrintWriter to_server = new PrintWriter(sock.getOutputStream());
//send command to the server in netstring format
//dont forget to flush
to_server.print(command.length()+":"+command+",");
to_server.flush();
}
catch(Exception e){
System.err.println(e);
}
}
public static String readns(Socket sock) throws IOException{
//read and and decode a netstring from a socket
String ret = "";
try{
InputStream from_server = sock.getInputStream();
OutputStream to_file = System.out;
//read the message size returned by the server
int bytes_read;
String size = "";
byte[] b = new byte[1];
String tmp = "";
while(!tmp.equals(":")){
bytes_read = from_server.read(b);
tmp=new String(b);
if(!tmp.equals(":"))
size = size + new String(b);
else if(bytes_read==0)
throw new IOException("Missing : seperator");
}
int sz = Integer.parseInt(size);
byte[] b2 = new byte[sz];
while(sz!=0){
bytes_read=from_server.read(b2,0,sz);
if(bytes_read==0)
throw new IOException("Short netstring read");
sz-=bytes_read;
}
bytes_read=from_server.read(b);
tmp = new String(b,0,1);
if(!tmp.equals(","))
throw new IOException("Missing netstring terminator");
if(bytes_read==0)
throw new IOException("Short netstring read");
ret = ret + new String(b2);
}
catch(Exception e){
System.err.println(e);
}
return ret;
}
public static void main(String args[]){
try{
String host = "smi.ucd.ie";
int port = 8081;
String command1,command2;
String response;
//open a connection to the socket
Socket sock = new Socket(host,port);
command1 = "add_query hello java world";
command2 = "queue_contents";
//send some commands and ger the results
writens(sock,command1);
response = readns(sock);
System.out.println(response);
writens(sock,command2);
response = readns(sock);
System.out.println(response);
//send BYE message when finished
writens(sock,"BYE");
//close the connection
sock.close();
}
catch(Exception e){
System.err.println(e);
}
}
}