검색결과 리스트
글
C#과 그냥 동일한 형태이다. 단 다음 예제는 객체를 던진다.
즉, Sirializable 된 데이터를 넘겨준다. 물론 C#에도 있다. 메모리 스트림을 이용하여 넘겼었던가 그럴 것이다.
서버 측 코드는 다음과 같다.
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server_Object
{
public static void main(String[] args) throws IOException
{
ServerSocket ServerSocket = null;
Socket AcceptSocket = null;
try
{
ServerSocket = new ServerSocket( 8520, 2000 );
while(true)
{
AcceptSocket = ServerSocket.accept();
ThreadClass service = new ThreadClass(AcceptSocket);
service.run();
}
}
catch(Exception ex)
{
System.out.println("error" + ex.getMessage());
}
finally
{
ServerSocket.close();
}
}
}
class ThreadClass extends Thread
{
private Socket s_socket;
public ThreadClass(Socket Sock)
{
s_socket = Sock;
}
public void run()
{
try
{
ObjectInputStream in = new ObjectInputStream(s_socket.getInputStream());
Student data = (Student)in.readObject();
out.writeObject(data);
}
catch(Exception e)
{
System.out.println("error" + e.getMessage());
}
finally
{
try
{
s_socket.close();
}
catch(IOException ioex)
{
}
}
}
}
크게 다른 것은 없다
소켓을 생성하여 거기에 대한 접근 소켓을 따로 처리 해 주면서 Stream을 통하여 처리를 한다. 문자열을 보내고 싶다면
BufferedWriter와 BufferedReader, StreamReader 쪽을 찾아서 처리를 하면 된다.
스트림을 받을 땐 명시적으로 반드시 해당하는 형에 따른 변환을 하여서 처리를 해야한다.
그리고 서버 소켓 쪽에 살펴보면 2000 이라고 명시 된 부분이 있는데 이는 C#에서 Listen 과 같은 역할을 한다.
클라이언트 쪽은 다음과 같다.
import java.net.*;
import java.io.*;
public class Client_Object {
public static void main(String[] Args) throws IOException
{
Socket c_socket = null;
try
{
c_socket = new Socket("127.0.0.1",5425);
ObjectOutputStream out = new ObjectOutputStream(c_socket.getOutputStream()
Student data = new Student();
data.setName("홍길동");
data.setAdd("경북");
out.writeObject(data);
}
catch(Exception ex)
{
System.out.println("error" + ex.getMessage());
}
finally
{
c_socket.close();
}
}
}
역시나 마찮가지로 소켓을 하나 생성한 후 ObjectOutputStream을 이용하여 날려 보내면 된다.
바이트로 데잍를 전송 시킬 경우는 다음과 같다.
일단 먼저 서버이다.
try
{
byte[] buff = new byte[1024];
in.read(buff);
String sData= new String(buff);
System.out.println(sData);
out.write("S->C".getBytes());
}
catch(Exception e)
{
System.out.println("error" + e.getMessage());
s_socket.close();
break;
}
finally
{
}
InputStream을 이용하여 buffer에 쌓인 데이터를 받아 원하는 형태로 바꿔주고
전송 할 경우 getBytes()를 이용한다. 이는 C#에 Encoding.Defalt.GetBytes() 와 동일한 역할을 한다.
클라이언트 측도 위 내용과 동일한 형태이다. InputStream과 OutputStream을 이용하면 손쉽게 작성 가능하다.
RECENT COMMENT