자바 소켓 바이트 통신 중, 값이 제대로 전달이 안됩니다.
조회수 9139회
바이트 통신 중, 값을 제대로 받아오지 못하는 것인지 값이 제대로 전달이 안되는 것인지.. 알 수 없는 문제가 발생하였습니다.
아래는 클라이언트 소스코드입니다.
Socket soc = new Socket("127.0.0.1", 7824);
InputStream is = new BufferedInputStream(soc.getInputStream());
BufferedOutputStream os = new BufferedOutputStream(soc.getOutputStream());
os.write(("asff").getBytes());
os.flush();
os.write(("f12312").getBytes());
os.flush();
System.out.println("소켓 오픈.");
아래는 서버 소스코드의 일부분 입니다.
in = socket.getInputStream();
out = socket.getOutputStream();
handler = new PacketHandler(socket, in, out);
private BufferedInputStream in;
private BufferedOutputStream out;
public PacketHandler(Socket soc, InputStream in, OutputStream out) {
this.soc = soc;
this.in = new BufferedInputStream(in);
this.out = new BufferedOutputStream(out);
}
public synchronized byte[] readPacket() {
byte[] packet = null;
try {
System.out.println(in.available());
packet = new byte[in.available()];
for (int pos = 0; pos < in.available(); pos++) {
packet[pos] = (byte) (in.read());
}
} catch (IOException e) {
}
return packet;
}
아래는 문제의 사진입니다.
이런 식의 통신은 처음이라, 어떻게 처리해야 좋을지 모르겠습니다..
귀한 시간 내주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
간단한 TCP/IP 통신 예제 입니다.
서버
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; 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 ss; Socket sc; BufferedReader in; PrintWriter out; try{ ss= new ServerSocket(6666); sc= ss.accept(); System.out.println(sc.getInetAddress()+"와 연결되었습니다."); in = new BufferedReader(new InputStreamReader(sc.getInputStream())); out = new PrintWriter(sc.getOutputStream(),true); String inLine = "bcbcbcb"; System.out.println("수신 : " + inLine); out.println(inLine); System.out.println("송신:"+inLine); in.close(); out.close(); sc.close(); ss.close(); }catch(IOException ex){ ex.printStackTrace(); } } }
클라이언트
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class TcpIpClient { public static void main(String[] args) { Socket sc; BufferedReader in; PrintWriter out; String outLine = "aaaaaa"; String inLine = null; String host="127.0.0.1"; try{ sc=new Socket(host,6666); out=new PrintWriter(sc.getOutputStream(),true); in = new BufferedReader(new InputStreamReader(sc.getInputStream())); System.out.println("송신:"+outLine); inLine="adbfdaba"; System.out.println("수신:"+inLine); in.close(); out.close(); sc.close(); }catch(IOException ex){ ex.printStackTrace(); } } }
댓글 입력