socket programming in java

i am doing socket programming. i am able to send data from client to server using one computer. however, i could not send data to other computer using same java code. another problem is only client can send data to server. how can i enable server also can send data to client? pls help.
i enclosed my java code below:

// tcpClient.java by fpont 3/2000

// usage : java tcpClient <server> <port>
// default port is 1500

import java.net.*;
import java.io.*;

public class tcpClient {



public static void main(String[] args) {

int port = 1500;
String server = "localhost";
Socket socket = null;
String lineToBeSent;
BufferedReader input;
PrintWriter output;
int ERROR = 1;

// read arguments
if(args.length == 2) {
server = args[0];
try {
port = Integer.parseInt(args[1]);
}
catch (Exception e) {
System.out.println("server port = 1500 (default)");
port = 1500;
}
}



// connect to server
try {
socket = new Socket(server, port);
System.out.println("Connected with server " +
socket.getInetAddress() +
":" + socket.getPort());
}
catch (UnknownHostException e) {
System.out.println(e);
System.exit(ERROR);
}
catch (IOException e) {
System.out.println(e);
System.exit(ERROR);
}



try {
input = new BufferedReader(new InputStreamReader(System.in));
output = new PrintWriter(socket.getOutputStream(),true);

// get user input and transmit it to server
while(true) {
lineToBeSent = input.readLine();
// stop if input line is "."
if(lineToBeSent.equals(".")) break;
output.println(lineToBeSent);
}
}
catch (IOException e) {
System.out.println(e);
}

try {
socket.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}

-------------------------------------------------------------------------------------------------------------------------------------------------
// tcpServer.java by fpont 3/2000

// usage : java tcpServer <port number>.
// default port is 1500.
// connection to be closed by client.
// this server handles only 1 connection.

import java.net.*;
import java.io.*;

public class tcpServer {

public static void main(String args[]) {

int port;
ServerSocket server_socket;
BufferedReader input;

try {
port = Integer.parseInt(args[0]);
}
catch (Exception e) {
System.out.println("port = 1500 (default)");
port = 1500;
}

try {

server_socket = new ServerSocket(port);
System.out.println("Server waiting for client on port " +
server_socket.getLocalPort());

// server infinite loop
while(true) {
Socket socket = server_socket.accept();
System.out.println("New connection accepted " +
socket.getInetAddress() +
":" + socket.getPort());
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// print received data
try {
while(true) {
String message = input.readLine();
if (message==null) break;
System.out.println(message);
}
}
catch (IOException e) {
System.out.println(e);
}

// connection closed by client
try {
socket.close();
System.out.println("Connection closed by client");
}
catch (IOException e) {
System.out.println(e);
}

}


}

catch (IOException e) {
System.out.println(e);
}
}
}
skychanAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
CEHJConnect With a Mentor Commented:
You need to get the server to open a socket to a ServerSocket on the client
0
 
girionisConnect With a Mentor Commented:
There should be no problem, if it works locally and not remotely then I'd say there is no problem with the Java code. Can you ping the other computer you are trying to access? Do you get any exceptions/error messages?
0
 
skychanAuthor Commented:
I want to send data by client (example:string )and server takes this string and wiev data
but i can't do it ?
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
CEHJCommented:
a.
>>
I want to send data by client (example:string )and server takes this string and wiev data
but i can't do it ?
>>

b.
>>
how can i enable server also can send data to client? pls help.
>>

Please be clear - which of the above do you want to do - a., b. or both?
0
 
skychanAuthor Commented:
hi cehj
both a an b
i  should do both...
0
 
CEHJCommented:
Then you should have a ServerSocket both ends. Do you?
0
 
Giant2Connect With a Mentor Commented:
Why do you not use the RemoteMethodInvocation.
in this manner you send something (calling a method) to the server. It create something and can answer to the request.

Bye, Giant.
0
 
girionisCommented:
> i am able to send data from client to server using one computer.

As the above comment of your suggest you have already done it. The problem is in the network between the two computers. As I see from code you psoted you try to conenct to localhost. This is not the case anymore asince the server rusn on a different computer. You need to chaneg this line:

String server = "localhost";

with the IP or DNS of the computer you are trying to connect to.
0
 
skychanAuthor Commented:
hi Giant2
i don' t known anything RemoteMethodInvocation.
If you can write  one or more example I can use RemoteMethodInvocation.
 
0
 
skychanAuthor Commented:
Cehj
i don't have ServerSocket both .
ok i send only client to server and server wiev data
0
 
CEHJCommented:
>>ok i send only client to server and server wiev data

You should decide on what your program should do before you start wasting your points by asking questions about it
0
 
Giant2Commented:
RemoteMethodInvocation is RMI.
As CEHJ suggest you, "should decide on what your program should do before you start wasting your points by asking questions about it".
See the system actually available doing this you want (for RMI see http://java.sun.com/docs/books/tutorial/rmi/).

So, wait a moment. See better what you want and see if there are environment/api already doing it.

Bye, Giant.
0
 
girionisCommented:
My comments offer a possible solution. I'd say I am worth some points.
0
 
Giant2Commented:
I think a split could be done.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.