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:
parent
6b5cde51da
commit
932386c8ee
@ -10,6 +10,7 @@ public class KaZaClient
|
||||
private String m_sharedFolder;
|
||||
private boolean m_connected = false;
|
||||
private Socket m_socket;
|
||||
private DataOutputStream m_os;
|
||||
|
||||
public KaZaClient(String userName, int kbps,
|
||||
String sharedFolder, String server)
|
||||
@ -18,10 +19,9 @@ public class KaZaClient
|
||||
|
||||
try {
|
||||
m_socket = new Socket(server, KaZaServer.LISTEN_PORT);
|
||||
DataOutputStream os = new DataOutputStream(
|
||||
m_socket.getOutputStream());
|
||||
os.writeBytes("HELO " + userName + "\n");
|
||||
os.writeBytes("SPED " + kbps + "\n");
|
||||
m_os = new DataOutputStream(m_socket.getOutputStream());
|
||||
m_os.writeBytes("HELO " + userName + "\n");
|
||||
m_os.writeBytes("SPED " + kbps + "\n");
|
||||
File sharedDir = new File(m_sharedFolder);
|
||||
if (sharedDir.isDirectory())
|
||||
{
|
||||
@ -38,7 +38,7 @@ public class KaZaClient
|
||||
new InputStreamReader(fis));
|
||||
String sharedFileName = br.readLine();
|
||||
String sharedFileDesc = br.readLine();
|
||||
os.writeBytes("DESC " + sharedFileName + "\n" +
|
||||
m_os.writeBytes("DESC " + sharedFileName + "\n" +
|
||||
sharedFileDesc + "\n");
|
||||
}
|
||||
}
|
||||
@ -52,4 +52,57 @@ public class KaZaClient
|
||||
}
|
||||
|
||||
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 = "";
|
||||
}
|
||||
}
|
||||
|
@ -104,6 +104,22 @@ public class KaZaGUI extends JFrame
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,6 +125,7 @@ public class KaZaServer implements Runnable
|
||||
{
|
||||
m_clientInfo.userName = inLine.substring(5);
|
||||
}
|
||||
System.out.println("Got HELO from " + m_clientInfo.userName);
|
||||
}
|
||||
else if (opCode.equals("SPED"))
|
||||
{
|
||||
@ -136,6 +137,7 @@ public class KaZaServer implements Runnable
|
||||
{
|
||||
m_clientInfo.speed = speed;
|
||||
}
|
||||
System.out.println("Got SPED of " + m_clientInfo.speed);
|
||||
}
|
||||
}
|
||||
else if (opCode.equals("DESC"))
|
||||
@ -147,6 +149,8 @@ public class KaZaServer implements Runnable
|
||||
{
|
||||
m_clientInfo.files.put(fileName, fileDesc);
|
||||
}
|
||||
System.out.println("Got DESC of '" + fileName +
|
||||
"': '" + fileDesc + "'");
|
||||
}
|
||||
else if (opCode.equals("SRCH"))
|
||||
{
|
||||
@ -160,6 +164,8 @@ public class KaZaServer implements Runnable
|
||||
String searchResults = performSearch(depth, query);
|
||||
os.writeBytes(searchResults);
|
||||
os.writeBytes(".\n");
|
||||
System.out.println("Got SRCH for " + query +
|
||||
", results:\n" + searchResults);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user