2020-01-09, 16:21
  #1
Medlem
Jag försöker skicka en enkel string via en socket. Har gjort ett exempel program från https://www.javatpoint.com/socket-programming
Jag kör Client och Server med cmd och de körs men inget skrivs ut i konsolen. Är det något fel med koden i sig som gör att println (i client filen) inte körs eller har det att göra med att jag kör filerna via cmd?

Client.java
Kod:
public class Client {
	
	public static void main(String[] args){
		
		try{
			ServerSocket ss = new ServerSocket(6666);
			Socket s = ss.accept();
			DataInputStream din = new DataInputStream(s.getInputStream());
			String str = din.readUTF();
			
			System.out.println("Message received: " + str);
			ss.close();
			
		}catch(Exception e){
			System.out.println(e);
		}
		
	}
}

Server.java
Kod:
public class Server {

	public static void main(String[] args){
		
		int port = 6666;
		String ipAdress = "localhost";
		
		try{
			Socket s = new Socket(ipAdress, port);
			DataOutputStream dout = new DataOutputStream(s.getOutputStream());
			dout.writeUTF("Hello Server");
			dout.flush();
			dout.close();
			s.close();
			
		}catch(Exception e){
			System.out.println(e);
		}
	}
}
Citera
2020-01-09, 17:34
  #2
Medlem
AquaRegias avatar
Varför skapas en ServerSocket i klienten? Och varför skriver servern "Hello Server" till sin socket?
Citera
2020-01-09, 17:45
  #3
Medlem
Som påpekats så är din client en server och vice versa. Servern ska startas innan clienten. I vilken ordning har du startat dem och får du inga exceptions?
Lite mer info om Client - Server
https://docs.oracle.com/javase/tutor...entServer.html
__________________
Senast redigerad av DieTrolle 2020-01-09 kl. 17:47.
Citera
2020-01-10, 12:41
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av SingedRyze
Jag försöker skicka en enkel string via en socket. Har gjort ett exempel program från https://www.javatpoint.com/socket-programming
Jag kör Client och Server med cmd och de körs men inget skrivs ut i konsolen. Är det något fel med koden i sig som gör att println (i client filen) inte körs eller har det att göra med att jag kör filerna via cmd?

Client.java
Kod:
public class Client {
	
	public static void main(String[] args){
		
		try{
			ServerSocket ss = new ServerSocket(6666);
			Socket s = ss.accept();
			DataInputStream din = new DataInputStream(s.getInputStream());
			String str = din.readUTF();
			
			System.out.println("Message received: " + str);
			ss.close();
			
		}catch(Exception e){
			System.out.println(e);
		}
		
	}
}

Server.java
Kod:
public class Server {

	public static void main(String[] args){
		
		int port = 6666;
		String ipAdress = "localhost";
		
		try{
			Socket s = new Socket(ipAdress, port);
			DataOutputStream dout = new DataOutputStream(s.getOutputStream());
			dout.writeUTF("Hello Server");
			dout.flush();
			dout.close();
			s.close();
			
		}catch(Exception e){
			System.out.println(e);
		}
	}
}
Kan bara fylla på det som tidigare skrivit, logiken verkar bakvänd.

Din klient kommer behöva skapa en socket för atrt prata med server. Din server kommer behöva använda en serversocket som ligger och lyssnar på inkommande anslutningar.

Läs på om hur du skapar och använder sockets. Enkelt uttryckt behöver du i din klient skapa en socket som får gå mot en endpoint där din serversocket lyssnar, sedan måste du anropa metoden connect i din socket för att ansluta, därefter kan du skicka och ta emot meddelanden över din socket och när du är klar behöver du stänga din socket.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in