준비물 : 같은 네트워크 (같은 wifi등)를 이용하는 pc 두 개
두 pc의 ip주소의 xxx.xxx.xxx.yyy xxx가 동일하면 특별하지 않은 경우에는 다 됨
내 pc ip주소 아는 방법 (클릭)
1. 서버측
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TcpIpServer {
public static void main(String args[])
{
ServerSocket serversocket = null;
try{
serversocket = new ServerSocket(7779);//친구와 아무 번호나 사용했다. 8888 빼고는 다 됨.
System.out.println(getTime()+"서버가 준비됨");
}catch(IOException e) {
e.printStackTrace();
}
while(true)
{
try {
System.out.println(getTime()+"연결요청기다림");
//서버소켓은 클라이언트 연결요청 올때까지 기다림
//클라이언트 연결요청이 오면 클라이언트 소켓과 통신할 새로운 소켓 생성
Socket socket = serversocket.accept();
System.out.println(getTime()+socket.getInetAddress()+"로부터 연결요청이 들어옴");
//소켓의 출력스트림을 얻는다
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
//원격 소켓에 데이터 보냄
dos.writeUTF("[Notice]test message1 from server");
System.out.println(getTime()+"데이터를 전송했음");
dos.close();//스트림과 소켓 닫아줌
socket.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
static String getTime()
{
SimpleDateFormat f = new SimpleDateFormat("[hh:mm:ss]");
return f.format(new Date());
}
}
2. 클라이언트 측
import java.io.DataInputStream;
import java.io.*;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.Socket;
public class TcpIpClient {
public static void main(String args[])
{
try {
String serverIp = "192.168.81.121"; //내 친구의 ip, 나와 마지막 .121 빼고는 동일하다.
System.out.println("서버에 연결중임 서버 ip : "+serverIp);
//소켓 생성해 연결 요청
Socket socket = new Socket(serverIp,7778);
//소켓 입력스트림 얻음
InputStream in = socket.getInputStream();
DataInputStream dis = new DataInputStream(in);
//소켓으로부터 받은 데이터 출력
System.out.println("서버로부터 받은 메시지 "+dis.readUTF());
System.out.println("연결을 종료합니다");
//스트림과 소켓을 닫는다
dis.close();
socket.close();
System.out.println("연결이 종료됨");
}catch(ConnectException ce) {
ce.printStackTrace();
}catch(IOException ie) {
ie.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
}
}
3. 결과
'TIL(Develop)' 카테고리의 다른 글
HTML은 무엇인가? What is HTML? (0) | 2023.09.04 |
---|---|
파이썬 기본 출력 (0) | 2022.08.05 |
파이썬 기초 문법 (0) | 2022.08.05 |
내 컴퓨터 ip주소 아는 법 (0) | 2022.01.18 |
python3 print 자동개행 안되도록 하기 (0) | 2021.08.01 |