publishing file list working, 1-level searching working

git-svn-id: svn://anubis/gvsu@44 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2008-03-08 23:38:33 +00:00
parent 6b5cde51da
commit 932386c8ee
3 changed files with 80 additions and 5 deletions

View File

@ -10,6 +10,7 @@ public class KaZaClient
private String m_sharedFolder; private String m_sharedFolder;
private boolean m_connected = false; private boolean m_connected = false;
private Socket m_socket; private Socket m_socket;
private DataOutputStream m_os;
public KaZaClient(String userName, int kbps, public KaZaClient(String userName, int kbps,
String sharedFolder, String server) String sharedFolder, String server)
@ -18,10 +19,9 @@ public class KaZaClient
try { try {
m_socket = new Socket(server, KaZaServer.LISTEN_PORT); m_socket = new Socket(server, KaZaServer.LISTEN_PORT);
DataOutputStream os = new DataOutputStream( m_os = new DataOutputStream(m_socket.getOutputStream());
m_socket.getOutputStream()); m_os.writeBytes("HELO " + userName + "\n");
os.writeBytes("HELO " + userName + "\n"); m_os.writeBytes("SPED " + kbps + "\n");
os.writeBytes("SPED " + kbps + "\n");
File sharedDir = new File(m_sharedFolder); File sharedDir = new File(m_sharedFolder);
if (sharedDir.isDirectory()) if (sharedDir.isDirectory())
{ {
@ -38,7 +38,7 @@ public class KaZaClient
new InputStreamReader(fis)); new InputStreamReader(fis));
String sharedFileName = br.readLine(); String sharedFileName = br.readLine();
String sharedFileDesc = br.readLine(); String sharedFileDesc = br.readLine();
os.writeBytes("DESC " + sharedFileName + "\n" + m_os.writeBytes("DESC " + sharedFileName + "\n" +
sharedFileDesc + "\n"); sharedFileDesc + "\n");
} }
} }
@ -52,4 +52,57 @@ public class KaZaClient
} }
public boolean connected() { return m_connected; } public boolean connected() { return m_connected; }
public Vector<SearchResult> performSearch(String query)
{
Vector<SearchResult> results = new Vector<SearchResult>();
try
{
m_os.writeBytes("SRCH 2 " + query + "\n");
BufferedReader br = new BufferedReader(
new InputStreamReader(
m_socket.getInputStream()));
for (;;)
{
String resultStr = br.readLine();
if (resultStr.equals("."))
break;
StringTokenizer tokens = new StringTokenizer(resultStr, "|");
SearchResult result = new SearchResult();
for (int i = 0; i < 4; i++)
{
if (tokens.hasMoreTokens())
{
String t = tokens.nextToken();
switch (i)
{
case 0:
result.peerAddress = t;
break;
case 1:
result.userName = t;
break;
case 2:
result.fileName = t;
break;
case 3:
result.fileDescription = t;
break;
}
}
}
results.add(result);
}
}
catch (Exception e) { }
return results;
}
public class SearchResult
{
String peerAddress = "";
String userName = "";
String fileName = "";
String fileDescription = "";
}
} }

View File

@ -104,6 +104,22 @@ public class KaZaGUI extends JFrame
m_serverStartButton.setEnabled(false); m_serverStartButton.setEnabled(false);
} }
} }
else if (e.getSource() == m_searchButton)
{
if (m_client != null && m_client.connected())
{
Vector<KaZaClient.SearchResult> results =
m_client.performSearch(m_queryField.getText());
for (KaZaClient.SearchResult r : results)
{
System.out.println("Result: " +
r.peerAddress + ", " +
r.userName + ", " +
r.fileName + ", " +
r.fileDescription);
}
}
}
} }
} }

View File

@ -125,6 +125,7 @@ public class KaZaServer implements Runnable
{ {
m_clientInfo.userName = inLine.substring(5); m_clientInfo.userName = inLine.substring(5);
} }
System.out.println("Got HELO from " + m_clientInfo.userName);
} }
else if (opCode.equals("SPED")) else if (opCode.equals("SPED"))
{ {
@ -136,6 +137,7 @@ public class KaZaServer implements Runnable
{ {
m_clientInfo.speed = speed; m_clientInfo.speed = speed;
} }
System.out.println("Got SPED of " + m_clientInfo.speed);
} }
} }
else if (opCode.equals("DESC")) else if (opCode.equals("DESC"))
@ -147,6 +149,8 @@ public class KaZaServer implements Runnable
{ {
m_clientInfo.files.put(fileName, fileDesc); m_clientInfo.files.put(fileName, fileDesc);
} }
System.out.println("Got DESC of '" + fileName +
"': '" + fileDesc + "'");
} }
else if (opCode.equals("SRCH")) else if (opCode.equals("SRCH"))
{ {
@ -160,6 +164,8 @@ public class KaZaServer implements Runnable
String searchResults = performSearch(depth, query); String searchResults = performSearch(depth, query);
os.writeBytes(searchResults); os.writeBytes(searchResults);
os.writeBytes(".\n"); os.writeBytes(".\n");
System.out.println("Got SRCH for " + query +
", results:\n" + searchResults);
} }
} }
} }