socket 수신 메시지 보내기(String message)
4055 단어 socket
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
*
* : /
*
*
* 2012 Qingshan Group 저작권 소유
*
* @author thetopofqingshan
* @version 1.0.0
* @since JDK 1.5
* @date 2012-4-25
*/
public class Client {
public void run(String ip, int port){
OutputStream os = null;
InputStream is = null;
try {
Socket client = new Socket(ip, port);//연속 목표 ip:192.168.1.114,port:4321
os = client.getOutputStream();//
System.out.println("메시지 보내는 중...");
os.write("보냈는지 안 받았는지 같은 메시지를 받았습니다".getBytes();//메시지 보내기
os.flush();//주의:flush 방법을 사용하지 않으면 서비스 측은 클라이언트가 보낸 메시지를 받을 수 있습니다
client.shutdownOutput();
is = client.getInputStream();//
byte[] buf = new byte[1024*8];//버퍼 영역
String msg="";
for(int len=is.read(buf);len>0;len=is.read(buf)){
msg+=new String(buf, 0, len);
}
client.shutdownInput();
System.out.println("회답 메시지 수신 중...");
System.out.println ("서버가 되돌려 주는 정보:"+ msg);
System.out.println("회답 메시지 수신 완료");
} catch (IOException e) {
e.printStackTrace();
}finally{
//모든 서비스
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Client c=new Client();
String ip="localhost";
//ip="www.baidu.com";
int port=8888;
//int port=80;
c.run(ip, port);
}
}
package com.qingshan.net.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
/**
*
* : ,
*
*
* 2012 Qingshan Group 저작권 소유
*
* @author thetopofqingshan
* @version 1.0.0
* @since JDK 1.5
* @date 2012-4-25
*/
public class Server {
private ServerSocket server;
private Socket client;
public Server() {
try {
this.server = new ServerSocket(8888);//요청 수신 포트
System.out.println ("서비스가 시작되었습니다..."
while (true) {
this.client = server.accept();//사용자 요청을 수신합니다. 여기서 기다리지 않습니다. 새로운 스레드 응답 요청이 있습니다.
if (client != null) {
//정보 수신 및 처리 서비스 오픈
Executor es = Executors.newCachedThreadPool();//스레드 탱크
es.execute(new Recieve(client));//새 스레드 열기
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* :
*
*
* 2012 Qingshan Group 저작권 소유
*
* @author thetopofqingshan
* @version 1.0.0
* @since JDK 1.5
* @date 2012-4-25
*/
public class Recieve implements Runnable {
public Recieve() {
}
public Recieve(Socket cleint) {
this.client = cleint;
}
Socket client;
public void run() {
try {
String response = "socket 클라이언트 정보 수신"
System.out.println ("메시지 수신 중...");
InputStream is = client.getInputStream();
String msg = client.getInetAddress().getHostAddress() + ": ";
byte[] buf = new byte[1024*8];
for(int len=is.read(buf);len>0;len=is.read(buf)){
msg+=new String(buf, 0, len);
}
client.shutdownInput();
System.out.println("클라이언트 메시지:"+ msg);
System.out.println("메시지 보내는 중...");
OutputStream os = client.getOutputStream();
os.write(response.getBytes());//메시지 보내기
os.flush();
client.shutdownOutput();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new Server();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.