Java套接字帮助客户端 - 服务器

时间:2017-11-01 17:52:43

标签: java multithreading sockets java-threads

我需要帮助来使用线程进行java练习。 我希望这个程序能够回复客户用他们的名字和消息时间写的信息。这是我目前的代码。 以同样的方式,我有消息,我无法打印程序 非常感谢,感谢任何帮助。

服务器

SELECT A.BENEFIT_PERIOD, 
A.BENEFIT_TYPE, 
A.PLAN_NAME, 
A.PERSON_TYPE, 
A.LAST_NAME, 
A.FIRST_NAME, 
A.MIDDLE_NAME, 
A.SUFFIX, 
A.MARITAL_STATUS, 
A.RETIRED, 
A.HOURS_WORKED, 
A.GENDER, 
A.COVERAGE, 
A,EMPLOYEE_ID
A.TOTAL_MONTHLY_COST, 
A.PENDING_STATUS, 
A.FIRST_NAME & A.LAST_NAME AS AFirstLast, 
B.FIRST_NAME & B.LAST_NAME AS BFirstLast
FROM [Benefit Detail Report] AS A INNER JOIN [Benefit Detail Report] AS B ON A.[EMPLOYEE_ID] = B.[EMPLOYEE_ID]
WHERE AFirstLast <> BFirstLast;

客户端

public class Servidor {

public static void main(String[] args) {

ServerSocket servidor;
Socket conexion;
DataOutputStream salida;
DataInputStream entrada;
 int num = 0;

 try{

     //Vamos a crear un serverSocket en el puerto seleccionado
     servidor = new ServerSocket();
     System.out.println("Servidor arrancado correctamente");

     while(true){

         //Se espera a la conexion de alguno de los clientes
         conexion = servidor.accept();
         num++;
         System.out.println("Conexión numero"+num+" desde: " + conexion.getInetAddress().getHostName());

         //Abrimos ahora los canales de entrada y salida
         entrada = new DataInputStream(conexion.getInputStream());
         salida = new DataOutputStream(conexion.getOutputStream());

         //Vamos  aleer el mensaje del cliente
         String nombreCliente = entrada.readUTF(); System.out.println("Conexión n " +num+ " mensaje: "+ nombreCliente);

         //Le respondemos al cliente
         salida.writeUTF("Buenos días, " +nombreCliente+ ", Hoy es sábado, día de clase");
         conexion.close();
     }
 }catch (IOException e) {
}

1 个答案:

答案 0 :(得分:0)

当您使用$('#changeUrl').click(function () { $('body').fadeOut(); history.pushState({}, 'Title', '/Url/Test'); $(document).load('/url html', function () { $('body').fadeIn(); }); }); 的无参数构造函数时,您获得的是未绑定的实例。你有两个选择:

  • 在调用ServerSocket()构造函数

  • 时提供端口信息
  • 使用无参数构造函数,然后调用bind方法。 javadoc解释了这一点。您必须提供ServerSocket以及服务器和端口号的详细信息。 InetSocketAddress

这两种方法的区别在于,第二种方法可以让您有机会区分“localhost”和PC所具有的任何网络适配器。您可能希望将服务器套接字的可见性限制为特定的一个。显然它不是魔术,你不能将服务器套接字绑定到你不能控制的另一台机器的IP,但你可能想要绑定到127.0.0.1或192.168.xx或你想要使用的任何适配器。