>Java >java지도 시간 >자바 Tcp 프로토콜 소켓 프로그래밍 학습

자바 Tcp 프로토콜 소켓 프로그래밍 학습

伊谢尔伦
伊谢尔伦원래의
2016-11-26 09:33:401322검색

내가 배운 주요 단계

첫 번째 단계: 특정 포트(예: 4800)를 사용하여 새 소켓 개체를 만듭니다.
두 번째 단계: 시스템 입력 장치를 사용하여 BufferedReader 개체를 구성합니다. 키보드에서 시스템 문자 입력을 수신하는 데 사용됩니다.
3단계: 소켓 개체에서 출력 스트림을 가져와 PrintWriter를 구성합니다.
4단계: 소켓 개체에서 입력 스트림을 가져와 해당 BufferedReader 개체를 구성합니다. 정보

소켓 닫기에 대해 제가 이해한 바는 먼저 열고 나중에 닫으면 소켓이 마지막에 닫히는 것입니다.

클라이언트 코드 구현은 다음과 같습니다.

package com.fan.socket;

import java.io.*;
import java.net.Socket;

public class SocketClient {
public static void main(String[] args) throws IOException{

try{
Socket 소켓=new Socket("127.0.0.1",4800 ) ;
System.out.println("client start ...");
//이 머신의 4800 포트로 클라이언트 요청 보내기
BufferedReader br=new BufferedReader(new InputStreamReader(System. in)) ;
//시스템 표준 입력 장치에서 BufferedReader 개체를 구성합니다.
PrintWriter write=new PrintWriter(socket.getOutputStream());
//소켓 개체에서 출력 스트림을 가져와 구성합니다. PrintWriter 객체
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//Socket 객체에서 입력 스트림을 가져오고 해당 BufferedReader 객체를 생성합니다
String readline;
readline=br.readLine() ; //시스템 표준 입력에서 문자열을 읽습니다
while(!readline.equals("end")){
//표준 입력에서 읽은 문자열이 " end", 루프 중지
write.println(readline);
//시스템 표준 입력에서 읽은 문자열을 Server2에 출력
write.flush();
//출력 스트림 새로 고침 서버가 즉시 수신하도록 이 문자열
System.out.println("Client:"+readline);
//읽은 문자열을 시스템 표준 출력에 인쇄합니다.
System.out.println(" Server:"+ in.readLine());
//서버에서 문자열을 읽어 표준 출력에 인쇄
readline=br.readLine(); //시스템 표준 입력에서 문자열 읽기
} //루프 계속
write.close(); //소켓 출력 스트림 닫기
in.close() //소켓 입력 스트림 닫기
socket.close(); //소켓 닫기
}catch(Exception e) {
System.out.println("can not listening to:"+e);//오류, 오류 메시지 인쇄
}
}

}

서버 코드 구현:

package com.fan.socket;

java.io.* 가져오기;
java.net.ServerSocket 가져오기;
java.net.Socket 가져오기;

공용 클래스 SocketService {
public static void main( String[] args) throws IOException{
SocketService 소켓Service = new SocketService();
socketService.oneServer();
}

public void oneServer(){
try{
ServerSocket 서버=null;
try{
server=new ServerSocket(4800);
System.out.println("서버 시작은 괜찮습니다...");
//포트 4800에서 클라이언트 요청을 수신하는 하나의 ServerSocket 생성
}catch(Exception e) {
System.out.println("can not listening to:"+e);
//Error, 오류 메시지 인쇄
}
Socket 소켓=null;
try{
socket=server.accept();
//accept()를 사용하여 고객 요청을 차단하고 기다립니다. 고객입니다
//요청은 소켓 개체가 생성되고 계속 실행됩니다.
}catch(Exception e) {
System.out.println("Error."+e);
//오류, 오류 메시지 인쇄
}
String line;
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//소켓에서 입력 스트림 가져오기 객체를 생성하고 해당 BufferedReader 객체를 생성합니다
PrintWriterwriter=new PrintWriter (socket.getOutputStream());
//소켓 객체에서 출력 스트림을 가져오고 PrintWriter 객체를 생성합니다
BufferedReader br=new BufferedReader( new InputStreamReader(System.in));
//시스템 표준에 따라 입력 장치는 BufferedReader 개체를 구성합니다
System.out.println("Client:"+in.readLine());
/ /클라이언트에서 읽은 문자열을 표준 출력에 인쇄
line=br .readLine();
//표준 입력에서 문자열 읽기
while(!line.equals("end")){
//문자열이 "end"이면 루프 중지
writer.println(line);
//클라이언트에 문자열 출력
writer.flush();
// 클라이언트가 문자열을 즉시 수신하도록 출력 스트림을 새로 고칩니다.
System.out.println("Server:"+line);
//읽은 문자열을 시스템 표준 출력
System.out에 인쇄합니다. println("Client:"+in.readLine( ));
//클라이언트에서 문자열을 읽어 표준 출력으로 인쇄합니다.
line=br.readLine();
//읽기 시스템 표준 입력의 문자열
} //루핑 계속
writer.close(); //소켓 출력 스트림 닫기
in.close() //소켓 입력 스트림 닫기
socket .close(); //소켓 닫기
server.close(); //서버소켓 닫기
}catch(Exception e) {//오류, 오류 메시지 인쇄
System.out.println(" 오류."+e);
}
}
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.