السلام عليكم ورحمة الله وبركاته ..
لقد أنشأت برنامج بسيط Client - Server , حيث أن Client يقوم بإرسال بيانات شخص Person إلى Server .
Server يستقبل هذا Object من نوع Person ويرسله مرة أخرى إلى Client , لذلك من المفترض أن يقوم Client الأن باستقبال هذه البيانات و يقوم بطباعة محتوى Person .. لكن للأسف هذا لم يحدث ولا أدري ما السبب .. إليكم الكود .
Class Person
public class Person {
int id;
String name;
public Person(int _id,String _name){
id=_id;
name=_name;
}}Class Server
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main (String args[]) {
try{
int serverPort = 7896;
ServerSocket listenSocket = new ServerSocket(serverPort);
while(true) {
Socket clientSocket = listenSocket.accept();
Connection c = new Connection(clientSocket);
}
}
catch(IOException e) {System.out.println("Listen :"+e.getMessage());}
}}Class Connection
ملاحظة : يقوم هذا الصنف بعمل مجموعة من Threads لعملية الاتصال بين Server و Client .
import java.net.*;
import java.io.*;
class Connection extends Thread {
ObjectInputStream in;
ObjectOutputStream out;
Socket clientSocket;
public Connection (Socket aClientSocket) {
try {
clientSocket = aClientSocket;
in = new ObjectInputStream( clientSocket.getInputStream());
out =new ObjectOutputStream( clientSocket.getOutputStream());
this.start();
}
catch(IOException e)
{System.out.println("Connection:"+e.getMessage());}
}
public void run(){
try {
Object data = in.readObject();
out.writeObject(data);
}
catch (ClassNotFoundException e){
System.out.println("Class:"+e.getMessage());
}
catch(EOFException e)
{System.out.println("EOF:"+e.getMessage());}
catch(IOException e)
{System.out.println("IO:"+e.getMessage());}
finally{
try {clientSocket.close();}
catch (IOException e){}}
}}Class Client
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main (String args[]) {
Socket s = null;
try{
int serverPort = 7896;
s = new Socket(InetAddress.getLocalHost(), serverPort);
ObjectInputStream in = new ObjectInputStream( s.getInputStream());
ObjectOutputStream out =new ObjectOutputStream( s.getOutputStream());
String name="Mohamed";
int id=100;
//قمنا بعمل اوبجيكت للشخص
Person p =new Person(id,name);
//قمنا بإرسال البيانات على شكل أوبجيكت إلى سيرفر
out.writeObject(p);
Person data = (Person)in.readObject();
//من المفترض أن تقوم هذه الجملة بطباعة البيانات القادمة من سيرفر
System.out.println("Received: "+ data.name+"\t"+data.id);
}
catch (ClassNotFoundException e){
System.out.println("Class:"+e.getMessage());
}
catch (UnknownHostException e){
System.out.println("Sock:"+e.getMessage());
}
catch (EOFException e){
System.out.println("EOF:"+e.getMessage());
}
catch (IOException e){
System.out.println("IO:"+e.getMessage());}
finally {if(s!=null) try {s.close();}
catch (IOException e)
{System.out.println("close:"+e.getMessage());}
}}}