The Hoff Skrevet 23. januar 2008 Del Skrevet 23. januar 2008 Heisann, Tar faget "Kommunikasjon, Tjenester og Nett" og i boka er det skrevet to kodesnutter for å sette opp en TCP-klient og en TCP-server. Klient: import java.io.*; import java.net.*; public class TCPClient { public static void main(String[] args) throws Exception{ String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname",6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER :" + modifiedSentence); clientSocket.close(); } } Server: import java.io.*; import java.net.*; public class TCPServer { public static void main(String[] args) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true){ Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } } Så er spørsmålet, hva skal egentlig skje her? Og hvordan får jeg disse to til å samarbeide? På Klient: Hva er egentlig "hostname", og hvordan finner jeg ut den som passer på meg? Jeg har prøvd å starte TCP-Server på laptopen og TCPklient på den stasjonære for så å kjøre de samtidig, men å bruke ip-adressen min som hostname, men det skjer overhodet ingenting. jeg bruker eclipse hvis det skulle ha noe å si. Lenke til kommentar
Gjest Slettet+1374861 Skrevet 23. januar 2008 Del Skrevet 23. januar 2008 Hostname er snakk om en IP. Du trenger forøvrig ikke å kjøre testen på ulike maskiner. Du kan kjøre både klienten og serveren på samme maskina, og connecte til lokal IP. KTN ja. Krutt! (Eclipse har ingenting å si) Kan se litt mer på den spesifikke koden hvis ikke det er kommet noen andre svar til senere ikveld. Lenke til kommentar
The Hoff Skrevet 23. januar 2008 Forfatter Del Skrevet 23. januar 2008 Hostname er snakk om en IP.Du trenger forøvrig ikke å kjøre testen på ulike maskiner. Du kan kjøre både klienten og serveren på samme maskina, og connecte til lokal IP. IP fås fra whatismyip.com? Eller er det noe lokale greier? Er temmelig fersk nettverksspørsmål. Jeg prøvde nemlig med ipen fra whatismyip, men det skjedde overhodet ingenting. Programmet kjørte, men det ble ikke skrevet ut noen ting, selvom jeg sendte inn noe tekst som input. Lenke til kommentar
^aM^ Skrevet 23. januar 2008 Del Skrevet 23. januar 2008 Det er lokal IP ja. Start->Kjør skriv CMD. Trykk OK. Svart vindu popper opp. Skriv IP config. IP Address er host name. Sjekk om det funker. Lenke til kommentar
Gjest Slettet+1374861 Skrevet 24. januar 2008 Del Skrevet 24. januar 2008 Tror faktisk det funker å skrive med bokstaver "localhost". Laget noe lignende for ett nettverks pokerspill for en stund siden. Da gjorde vi all testing ved å starte to klienter (der en ble satt opp som spillende-server) på samme maskin. Lenke til kommentar
Gjest Slettet+1374861 Skrevet 24. januar 2008 Del Skrevet 24. januar 2008 Eneste jeg trengte å gjøre for å få dette til å kjøre var å bytte ut "hostname" med "localhost", starte en server (da måtte jeg på samme tid fjerne Java fra Windows Firewall blokkering), og så starte en klient og skrive noe i console.... Med den koden som du har lagt opp til i klient og server her da, så vil jo da en output til server være alt du får lov til per connection, og blir nødt til å sette opp en ny connection til serveren for hver gang du vil skrive noe til den. Lenke til kommentar
aC Skrevet 24. januar 2008 Del Skrevet 24. januar 2008 Eller bruk 127.0.0.1 (som igjen også er localhost gitt som en ip) I språk som f.eks c er det forskjell på hostnames (som er nødt til å bli resolved) og ip Nå er det en stund siden jeg brukte sockets i java sist, men etter et lite oppslag i api referansen til Sun java finner vi følgende signaturer: Socket(String host, int port)Creates a stream socket and connects it to the specified port number on the named host. og Socket(InetAddress address, int port)Creates a stream socket and connects it to the specified port number at the specified IP address. Dette forteller oss at både et hostname i form av string samt en ip adresse kan brukes. Hvis signaturen din er den øverste med hostname som string, ønsker du sikkert å bruke "localhost" som hostname, mens hvis signaturen din er den nederste ønsker du å bruke 127.0.0.1 som ip (den er også localhost) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå