*thread.sleep은 컴퓨터처리 속도가 너무 빨라 조절할 때(각각의 메서드는 1초이하의 시간이 걸림)
ex ) thread.sleep((int)(Math.random()*1000)); +예외처리
*thread를 동작시킬 때에는 run()이아닌 start()를 호출해야한다 (단, thread를 상속 받았을 경우에만/ 아니면 thread객체를 만들어 - Thread thr = new Thread()
-start()는 실행될 준비를 하게하는 메서드-----> 실행준비가 다 되면 run()호출
t1.start();를 입력하면 메인 + run() 으로 2개, 이후 추가시 run() +1씩
쓰레드 동기화, 동기화 블럭
synchronized를 메서드에 붙일 경우
- 모니터링 Rock은 한 for문이 끝날때 까지 다음 메서드들은 대기중이 된다(병용 가능)
synchronized(this){ sysout } 일경우
- sysout 만 블럭이 되어 겹치지않게 출력된다
Server
public class mainClass {
public static void main(String[] args) {
Socket clientsocket = null;//클라이언트 소켓
try {
//ServerSocket = 문지기 소켓 = 서버용 소켓
/*IPNumber 192.168.7.40 : 자동 */
ServerSocket serSocket = new ServerSocket(9000/*PortNumber 입력*/);
// IP, Port 설정
// binding(적용)
// listen
//client를 기다림
System.out.println("접속 대기중...");
clientsocket = serSocket.accept();//accept는 connect와 붙는다
//접속 대기중...
System.out.println("client IP : " + clientsocket.getInetAddress()
+ " Port : " + clientsocket.getPort());
//client IP : /192.168.7.40 Port : 52231
//recv (받는다)
BufferedReader reader
= new BufferedReader(new InputStreamReader(clientsocket.getInputStream()));
String packetStr = reader.readLine();//데이터 받아오기
System.out.println("클라이언트로부터 패킷 : "+ packetStr);
//send (보내다)
//숙제
clientsocket.close();
serSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client
package main;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
public class mainClass {
public static void main(String[] args) {
/*
1. 접속해야 할 Server IP(주소)를 설정
2. Socket을 생성
3. 접속 --- connect
4. packet을 전송
*/
InetSocketAddress sockAddr = new InetSocketAddress("192.168.7.40", 9000);
//123.0.0.1 <- 자기 자신을 접속하는 IP번호
Socket socket = new Socket();
try {
socket.connect(sockAddr, 10000 /*1000은 1초, 10000은 10초*/ );
InetAddress inetAddr;//접속 확인용
if ((inetAddr = socket.getInetAddress()) != null) {
System.out.println("Server connect success! : "+inetAddr);
//Server connect success! : /192.168.7.40
}else {
System.out.println("Server connect fail~");
}
String packetStr = "안녕하세유";
//send (보내다)
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println(packetStr);
writer.flush();//어디까지인지 끊어줌
//recv (받는다)
//숙제
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
'JAVA > 기초 프로그래밍' 카테고리의 다른 글
쓰레드// Object (0) | 2020.06.15 |
---|---|
쓰레드 예) (0) | 2020.06.15 |
팩토리// 무기, 폭탄 사용게임 (0) | 2020.06.11 |
함수//클래스에서 오버라이딩하여 변수 값 비교하기 (*헷깔림) (0) | 2020.06.09 |
함수//상속//도형면적 반환 (0) | 2020.06.09 |