자바 네트워크 프로 그래 밍:socket 과 sockserver

오늘 밤 자바 의 네트워크 프로 그래 밍 을 연구 하기 시작 합 니 다.우선 socket 부터 시작 합 시다.
자바 는 TCP 프로 토 콜 에 두 가지 종 류 를 제공 합 니 다:Socket 과 Socketserver.하나의 Socket 인 스 턴 스 는 TCP 의 한 끝 을 대표 합 니 다.하나의 TCP 연결 은 추상 적 인 양 방향 채널 이 고 양 끝 은 각각 IP 주소 와 포트 번호 로 확 정 됩 니 다.통신 을 시작 하기 전에 TCP 연결 을 만 들 려 면 클 라 이언 트 TCP 에서 서버 TCP 에 연결 요청 을 보 내야 합 니 다.ServerSocket 인 스 턴 스 는 TCP 연결 요청 을 감청 하고 모든 요청 에 새로운 Socket 인 스 턴 스 를 만 듭 니 다.
다음은 간단 한 client/server 의 예 입 니 다.
클 라 이언 트 코드:
//1.    Socket  ,                 TCP  。
//2.           (I/O)    ,  Socker      InputStream OutStream
//3.  Socket  close()      
public class TCPECHOClient {
	public static void main(String[] args) {
		String server = "localhost";
		String data = "Echo this!";
		byte[] bs = data.getBytes();
		try {
			//       ,        IP        
			Socket socket = new Socket(server,80);
			System.out.println("Connecting to server……");
			//       
			InputStream in = socket.getInputStream();
			OutputStream out = socket.getOutputStream();
			//           
			out.write(bs);
			//      
			int totalDateRecived = 0;
			int bytesRecvd = 0 ;
			while(totalDateRecived<bs.length){
				totalDateRecived +=bytesRecvd;
				if((bytesRecvd=in.read(bs,totalDateRecived,bs.length-totalDateRecived))==-1)
				throw new SocketException("connection closed!");
			}
			System.out.println("received:"+new String(bs));
			socket.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 서버:
public class TCPEchoServer {
	private static int BUFSiZE = 32;
	public static void main(String[] args) {
		try {
			ServerSocket serverSocket = new ServerSocket(80);
			int received = 0;
			byte[] receiveBuf =  new byte[BUFSiZE];
			while(true){
				Socket socket = serverSocket.accept();
				//                 InetSocketAddress  
				SocketAddress clientAddress = socket.getRemoteSocketAddress();
				System.out.println("handling client at:"+clientAddress);
				InputStream in = socket.getInputStream();
				OutputStream out = socket.getOutputStream();
				while((received=in.read(receiveBuf))!=-1){
					out.write(receiveBuf,0,received);
				}
				socket.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 출력 결과:
클 라 이언 트:서버 에 연결...수신:에코 이것!
서버:handling client at:/127.0.1:50884

좋은 웹페이지 즐겨찾기