socket 수신 메시지 보내기(String message)

4055 단어 socket
package com.qingshan.net.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();
}
}

좋은 웹페이지 즐겨찾기