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 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 = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user