Source Code untuk Client
import java.net.*; //
for Socket
import java.io.*; //
for IOException and Input/OutputStream
public class TCPEchoClient {
public static void
main(String[] args) throws IOException {
if ((args.length
< 2) || (args.length > 3)) // Test
for correct # of args
throw new
IllegalArgumentException("Parameter(s): <Server> <Word>
[<Port>]");
String server =
args[0]; // Server name or IP
address
// Convert input
String to bytes using the default character encoding
byte[] byteBuffer
= args[1].getBytes();
int servPort =
(args.length == 3) ? Integer.parseInt(args[2]) : 7;
// Create socket
that is connected to server on specified port
Socket socket =
new Socket(server, servPort);
System.out.println("Connected
to server...sending echo string");
InputStream in =
socket.getInputStream();
OutputStream out =
socket.getOutputStream();
out.write(byteBuffer); // Send
the encoded string to the server
// Receive the
same string back from the server
int totalBytesRcvd
= 0; // Total bytes received so far
int
bytesRcvd; // Bytes received in
last read
while
(totalBytesRcvd < byteBuffer.length) {
if ((bytesRcvd =
in.read(byteBuffer, totalBytesRcvd,
byteBuffer.length - totalBytesRcvd)) == -1)
throw new
SocketException("Connection close prematurely");
totalBytesRcvd
+= bytesRcvd;
}
System.out.println("Received: " + new String(byteBuffer));
socket.close(); // Close the socket and its streams
}
}
Source Code untuk Server
import java.net.*; // for Socket, ServerSocket, and InetAddress
import java.io.*; // for IOException and Input/OutputStream
public class TCPEchoServer {
private static final int BUFSIZE = 32; // Size of receive buffer
public static void main(String[] args) throws IOException {
if (args.length != 1) // Test for correct # of args
throw new IllegalArgumentException("Parameter(s): <Port>");
int servPort = Integer.parseInt(args[0]);
// Create a server socket to accept client connection requests
ServerSocket servSock = new ServerSocket(servPort);
int recvMsgSize; // Size of received message
byte[] byteBuffer = new byte[BUFSIZE]; // Receive buffer
for (;;) { // Run forever, accepting and servicing connections
Socket clntSock = servSock.accept(); // Get client connection
System.out.println("Handling client at " +
clntSock.getInetAddress().getHostAddress() + " on port " +
clntSock.getPort());
InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();
// Receive until client closes connection, indicated by -1 return
while ((recvMsgSize = in.read(byteBuffer)) != -1)
out.write(byteBuffer, 0, recvMsgSize);
clntSock.close(); // Close the socket. We are done with this client!
}
/* NOT REACHED */
}
}
Tidak ada komentar:
Posting Komentar