本人刚接触java以及socket编程,入门级水平。
现已知客户端跟服务端java代码如下:
//服务端
import java.net.*; // for Socket, ServerSocket, and InetAddress
import java.io.*; // for IOException and Input/OutputStream
public class TCP_Server
{
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 */
}
}
//客户端
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
}
}
一般情况下,是开两个终端分别运行服务端与客户端,
先执行服务端,显示如下:
g136@ispc29Lx:~$ java TCP_Server 50000
再执行客户端,依次输入IP 字符串 port号,显示如下
g136@ispc29Lx:~$ java TCPEchoClient 150.86.64.169 ab 50000
然后客户端跟服务端都会产生反应,如下:
g136@ispc29Lx:~$ java TCP_Server 50000
Handling client at 150.86.64.169 on port 58002
g136@ispc29Lx:~$ java TCPEchoClient 150.86.64.169 ab 50000
Connected to server...sending echo string
Received: ab
输入的是ab,服务端原封不动的返回的也是ab,我希望能在服务端添加一段代码,使返回的字符顺序改变成ba;或者把ab变成大写,怎么都行,只是希望能对原字符串进行改变。
第一次提问题,还请多多包涵。