老师讲了一个程序,课后实现了一下:在本机上实现TCP通信(把客户机上输入的小写字母传到服务器上转换成小写字母再传到客户机上)
TCPClient.java
package Internet;
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String args[]) throws Exception {
String sentence;
String modifiedSentence;
//该程序的输入流,连接到键盘
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost",6788);
//该程序的输出流,连接到套接字
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
//获取服务器传来的值,连接到套接字
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
在TCPClient.java中,inFromUser获取用户输入,然后建立clientSocket套接字,outToServer把用户输入通过套接字传到服务器,inFromServer接收服务器传来的数据
TCPServer.java
package Internet;
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String argv[]) throws Exception {
String clientSentence;
String capitalizedSentence;
//welcomeSocket在6789端口上监听
ServerSocket welcomeSocket = new ServerSocket(6788);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
//从客户机获取输入,连接到套接字
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
//连接到输出流
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
在TCPServer.java中,inFromClient接收客户机的输入,outToClient把处理后的结果传到客户机