IT story/Java

D+22 네트워크통신 (Tcp/Ip Client)

jason719 2016. 9. 8. 13:52

2016.09.07. 스물두 번째 수업


오늘의 수업내용

네트워크 통신 (Tcp/Ip Client) 구현

- 2개의 thread를 실행한다.

1.     Server에 Message를 보낸다. (Server가 Message를 받아서 다른 곳으로 보낸다.)

(ClientSender) DataOutputStream, Socket, String name(보내는 사람)

Socket.getOutputStream() -> 서버에 메시지를 보낸다. (DataOutputStream 도움필요!)

2.      Server에서 보낸 Message를 받는다.

(ClientReceiver) DataInputStream, socket

socket.getInputStream() -> 서버에서 보낸 메시지를 받는다. (DataInputStream 도움필요!)


예제

package com.javalesson.ch21network;


import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Scanner;


class ClientSender extends Thread {

String name;

DataOutputStream out; //Socket의 접속을 out이 가진다.

public ClientSender(Socket socket,String name) {

this.name = name;

try {

out = new DataOutputStream(socket.getOutputStream());

} catch (IOException e){e.printStackTrace();

}

}//생성자

@Override

public void run() {

Scanner scan = new Scanner(System.in); //console창 입력

try {

if(out!=null){ //초기 접속 이후 실행되지 않는다.

out.writeUTF(name);

}

while(out!=null){

out.writeUTF(name+":"+scan.nextLine()); 

}//server로 문자를 보내는 메소드

} catch (IOException e){e.printStackTrace();

}

}

}//ClientSender

class ClientReceiver extends Thread {

DataInputStream in; //socket의 입력을 가진다.

public ClientReceiver(Socket socket) {

try{

in = new DataInputStream(socket.getInputStream());

} catch (IOException e){e.printStackTrace();

}

}//생성자

@Override

public void run() {

while(in!=null){

try {

System.out.println(in.readUTF());

} catch (IOException e){e.printStackTrace();

}

}

}

}//ClientReceiver


public class L01TcpIpClient {

public static void main(String[] args) {

Socket socket;

try {

socket = new Socket("172.30.5.203",5000);

new ClientSender(socket,"이름").start();

new ClientReceiver(socket).start();

} catch (UnknownHostException e){e.printStackTrace();

} catch (IOException e){e.printStackTrace();

}

}//main

}//class


※console 출력내용


여러명이 접속하면 채팅이 가능하다!

(다음 게시물로 업로드할 Tcp/Ip Server를 실행해야지 접속가능!!)


'IT story > Java' 카테고리의 다른 글

ex) 네트워크통신(채팅창 생성)  (0) 2016.09.14
D+23 네트워크통신(Tcp/Ip Server)  (0) 2016.09.08
D+21 Text Editor(메모장 만들기)  (0) 2016.09.06
D+20 awt(text & text editor)  (0) 2016.09.06
D+19 Thread(쓰레드)  (0) 2016.09.01