Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Java Networking

Reply
Thread Tools

Java Networking

 
 
Chase Preuninger
Guest
Posts: n/a
 
      11-11-2007
I have been having trouble with my file transfer program that I have
been writing over the past few weeks. It makes p2p to transfer files
and the two sides update each over based upon string being sent over
one port (5013) and the actual data being sent over another (5012).
This works great except for when the user on the receiving side
accepts the download the update only makes it to the user on the other
side 20% of the time. Bellow I have provided the class that manages
the socket.


//This manages the connection for the receiving side
package com.cpsoft.filetransfer.net;

import java.net.*;
import java.io.*;
import java.util.*;
import com.cpsoft.filetransfer.*;
import java.util.*;

public class SocketIO
{
private Socket s;
private Writer out;
private Scanner in;
private InListener listener;
public SocketIO(Socket s) throws Exception
{
this.s = s;
try
{
s.setTcpNoDelay(true);
s.setSendBufferSize(5);
out = new OutputStreamWriter(s.getOutputStream(),
"UTF-8");
in = new Scanner(this.s.getInputStream());
}
catch(Exception ex)
{
throw ex;
}
listener = new InListener();
listener.start();
}
public void SendUpdate(Update u)
{
try
{
out.write(u.toString());
out.flush();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
private ArrayList updateEvents = new ArrayList();
public void addUpdateListener(UpdateListener l)
{
updateEvents.add(l);
}
private class InListener extends Thread
{
public InListener()
{
super();
setPriority(Thread.MAX_PRIORITY);
}
public void run()
{
while(!interrupted())
{
if(in.hasNext())
{
try
{
Update u = Update.parseString(in.nextLine());
if(u.getStatus().equals(Update.ACCEPT))
{
for(int i = 0; i < updateEvents.size(); i+
+)

((UpdateListener)updateEvents.get(i)).AcceptUpdate Receieved(u);
}
else if(u.getStatus().equals(Update.CANCEL))
{
for(int i = 0; i < updateEvents.size(); i+
+)

((UpdateListener)updateEvents.get(i)).CancelUpdate Receieved(u);
}
else if(u.getStatus().equals(Update.DONE))
{
for(int i = 0; i < updateEvents.size(); i+
+)

((UpdateListener)updateEvents.get(i)).DoneUpdateRe ceieved(u);
}
else if(u.getStatus().equals(Update.REQUEST))
{
for(int i = 0; i < updateEvents.size(); i+
+)

((UpdateListener)updateEvents.get(i)).RequestUpdat eReceieved(u);
}
else if(u.getStatus().equals(Update.DECLINE))
{
for(int i = 0; i < updateEvents.size(); i+
+)

((UpdateListener)updateEvents.get(i)).DeclineUpdat eReceieved(u);
}
for(int i = 0; i < updateEvents.size(); i++)

((UpdateListener)updateEvents.get(i)).UpdateReceie ved(u);
}
catch(Exception ex)
{
continue;
}
}
}
}
}
public void close()
{
try
{
listener.interrupt();
if(!s.isClosed())
s.close();
}
catch(Exception ex)
{

}
}
}



//Socket used on send side
package com.cpsoft.filetransfer.net;

import com.cpsoft.filetransfer.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class SendUpdateSocket extends Socket
{
public PrintWriter out;
public Scanner in;
private Thread inbound;

public SendUpdateSocket(InetAddress host, int port) throws
IOException
{
super(host, port);
}
public SendUpdateSocket()
{
super();
}
private ArrayList updateListeners = new ArrayList();

public void connect(SocketAddress endpoint) throws IOException
{
super.connect(endpoint);
inbound = new InboundManager();
out = new PrintWriter(getOutputStream());
in = new Scanner(getInputStream());
inbound.start();
setTcpNoDelay(true);
}
public void addUpdateListener(UpdateListener u)
{
updateListeners.add(u);
}
public void SendUpdate(Update u)
{
out.println(u.toString());
out.flush();
}
public void close() throws IOException
{
super.close();
inbound.interrupt();
}
private class InboundManager extends Thread
{
public InboundManager()
{
super();
setPriority(Thread.MAX_PRIORITY);
}
public void run()
{
System.out.println("RUNNING");
while(!interrupted())
{
if(in.hasNext())
{
try
{
Update u = Update.parseString(in.nextLine());
if(u.getStatus().equals(Update.ACCEPT))
{
for(int i = 0; i < updateListeners.size();
i++)

((UpdateListener)updateListeners.get(i)).AcceptUpd ateReceieved(u);
}
else if(u.getStatus().equals(Update.CANCEL))
{
for(int i = 0; i < updateListeners.size();
i++)

((UpdateListener)updateListeners.get(i)).CancelUpd ateReceieved(u);
}
else if(u.getStatus().equals(Update.DONE))
{
for(int i = 0; i < updateListeners.size();
i++)

((UpdateListener)updateListeners.get(i)).DoneUpdat eReceieved(u);
}
else if(u.getStatus().equals(Update.REQUEST))
{
for(int i = 0; i < updateListeners.size();
i++)

((UpdateListener)updateListeners.get(i)).RequestUp dateReceieved(u);
}
else if(u.getStatus().equals(Update.DECLINE))
{
for(int i = 0; i < updateListeners.size();
i++)

((UpdateListener)updateListeners.get(i)).DeclineUp dateReceieved(u);
}
for(int i = 0; i < updateListeners.size(); i+
+)

((UpdateListener)updateListeners.get(i)).UpdateRec eieved(u);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
}
}
}

 
Reply With Quote
 
 
 
 
Andrew Thompson
Guest
Posts: n/a
 
      11-11-2007
Chase Preuninger wrote:
>I have been having trouble with my file transfer program that I have
>been writing over the past few weeks. ...


For the best chance of getting help, I recommend you
1) Post an SSCCE*. The two classes can be incorporated into
one source file by reducing the access from public to 'default',
moving the imports to the top, getting rid of the package
statement (not entirely necessary, but easier), and fixing
(shortenning) those dozen lines that line-wrap**.
2) Ask a specific question.

* <http://www.physci.org/codes/sscce.html>
** A tool to help check line width ..
<http://www.physci.org/twc.jnlp>
Try to keep it under 62 chars width for usenet code
postings.

--
Andrew Thompson
http://www.athompson.info/andrew/

Message posted via JavaKB.com
http://www.javakb.com/Uwe/Forums.asp...neral/200711/1

 
Reply With Quote
 
 
 
 
Andrew Thompson
Guest
Posts: n/a
 
      11-11-2007
Chase Preuninger wrote:
>I have been having trouble with my file transfer program that I have
>been writing over the past few weeks. ...


As a general tip - never 'swallow' exceptions in code that
is breaking inexplicably.

e.g. This..

catch(Exception ex)
{

}

..should be..

catch(Exception ex)
{
// be very noisy about what went wrong
ex.printStackTrace();
}

--
Andrew Thompson
http://www.athompson.info/andrew/

Message posted via JavaKB.com
http://www.javakb.com/Uwe/Forums.asp...neral/200711/1

 
Reply With Quote
 
Gordon Beaton
Guest
Posts: n/a
 
      11-11-2007
On Sat, 10 Nov 2007 17:40:11 -0800, Chase Preuninger wrote:
> I have been having trouble with my file transfer program that I have
> been writing over the past few weeks. It makes p2p to transfer files
> and the two sides update each over based upon string being sent over
> one port (5013) and the actual data being sent over another (5012).


> This works great except for when the user on the receiving side
> accepts the download the update only makes it to the user on the
> other side 20% of the time.


Exactly what happens in the other 80%? Does the connection fail? Is
the file truncated or corrupted by the transfer? Do you get an
exception? Be specific.

AFAICT you are using a PrintWriter to send the file. Unless you're
sending pure text, you really should be using a FileOutputStream.

At first glance I'm unable to follow the logic in the code you've
posted, and I'm not even sure I can see where you transfer any data.
Post a concise example and describe the steps.

/gordon


--
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Internet networking , group networking,business leads,new business opportunities,like having many sales peoples elie Computer Support 0 08-18-2007 10:12 AM
networking two pc together with wireless networking ? Andy Wireless Networking 4 02-26-2007 06:02 PM
PROBLEMS WITH NETWORKING - NEW TO NETWORKING =?Utf-8?B?QUJTUE9QVVA=?= Wireless Networking 2 03-23-2005 08:31 AM
[Reminder] Online chat with Networking & Devices VP about Networking in Longhorn Eddy Malik [MSFT] Wireless Networking 0 03-22-2005 03:27 AM
networking 2 pc with a networking hub and 1 internet connection barry crowley Computer Support 20 02-27-2004 05:09 AM



Advertisments
 



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