Java 네트워크 프로그래밍 기초편의 단방향 통신 오리지널
실례 1: 이 실례는 TCP 서버 사이드 프로그램으로 getserver () 방법에서 서버 플러그인을 만들고 getClienMessage () 방법을 호출하여 클라이언트 정보를 얻습니다.코드는 다음과 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class MyTcp {
private BufferedReader reader;
private ServerSocket server;
private Socket socket;
void getserver() {
try {
server = new ServerSocket(8998);
System.out.println(" ");
while(true) {
System.out.println(" ");
socket = server.accept();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getClienMessage();
}
}catch(Exception e) {
e.printStackTrace();
}
}
private void getClienMessage() {
try {
while (true) {
System.out.println(" :"+ reader.readLine());
}
}catch(Exception e) {
e.printStackTrace();
}
try {
if(reader !=null) {
reader.close();
}
if(socket !=null) {
socket.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MyTcp tcp = new MyTcp();
tcp.getserver();
}
}
실행 결과:
서버 소켓이 클라이언트의 연결을 기다리는 데 성공했습니다
다음은 클라이언트 프로그램을 다시 한 번 보겠습니다.
실례2: 클라이언트 프로그램은 사용자가 텍스트 상자에 입력한 정보를 서버에 보내고 텍스트 상자에 입력한 정보를 클라이언트의 텍스트 필드에 표시합니다.코드는 다음과 같습니다.
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
public class MyClien extends JFrame{
private PrintWriter writer;
Socket socket;
private JTextArea ta = new JTextArea();
private JTextField tf = new JTextField();
Container cc;
public MyClien(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cc = this.getContentPane();
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
getContentPane().add(scrollPane, BorderLayout.CENTER);
scrollPane.setViewportView(ta);
cc.add(tf,"South");
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
writer.println(tf.getText());
ta.append(tf.getText()+ '
');
ta.setSelectionEnd(ta.getText().length());
tf.setText("");
}
});
}
private void connect() {
ta.append("
");
try {
socket = new Socket("127.0.0.1",8998);
writer = new PrintWriter(socket.getOutputStream(),true);
ta.append("
");
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MyClien clien = new MyClien(" ");
clien.setSize(200,200);
clien.setVisible(true);
clien.connect();
}
}
서버 측 실행 결과:
서버 플러그인은 클라이언트를 기다리는 연결 클라이언트를 만들었습니다. 혁명은 아직 성공하지 못했습니다. 동지는 여전히 노력해야 합니다!
클라이언트 실행 결과:
연결 혁명을 완성하는 데 성공하지 못했습니다. 동지는 여전히 노력해야 합니다!
설명:
한 기계에 여러 개의 네트워크 응용 프로그램이 설치되어 있으면 지정한 포트 번호가 이미 점용되었을 가능성이 높다.이전에 잘 실행되었던 네트워크 프로그램이 갑자기 실행되지 않는 상황을 만날 수도 있다. 이런 상황도 포트가 다른 프로그램에 의해 점용되었기 때문일 가능성이 높다.이 프로그램에서 사용하는 포트를 보려면 netstat-an 명령을 사용하십시오.
여기서 중요한 점은 본고에서 기술한 두 개의 원본 코드인데 하나는 서버 사이드 프로그램이고 하나는 클라이언트 프로그램이다.실행할 때 반드시 서버 사이드 프로그램을 실행한 다음에 클라이언트 프로그램을 실행해야 하며, 두 단락 코드의 포트 번호는 반드시 같아야 한다.
이상은 본문의 전체 내용입니다. 여러분께 도움이 되기를 진심으로 바랍니다.공부는 임무가 무겁고 갈 길이 먼 일이다. 그 옛말은 잘했다. 혁명은 아직 성공하지 못했으니 동지는 여전히 노력해야 한다!
여러분의 본 사이트에 대한 지지에 감사 드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.