java套接字编程对话
hi all我想在服务器和客户端之间进行java套接字对话,它与第一条消息一起工作,然后对话停止。在我的情况下,我想从客户端发送hi消息并从服务器接收hi消息,然后服务器还必须发送另一条消息“输入要检查的数字”,并等待输入 我的客户代码是:java套接字编程对话,java,sockets,client-server,Java,Sockets,Client Server,hi all我想在服务器和客户端之间进行java套接字对话,它与第一条消息一起工作,然后对话停止。在我的情况下,我想从客户端发送hi消息并从服务器接收hi消息,然后服务器还必须发送另一条消息“输入要检查的数字”,并等待输入 我的客户代码是: public class ClientSide { /** * @param args * @throws Exception */ public static void main(String[] args)
public class ClientSide {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
ClientSide clientSideInstance = new ClientSide();
clientSideInstance.run();
}
/**
* @throws Exception
*/
public void run() throws Exception{
Socket soc = new Socket("localhost",4321);
PrintStream printStream = new PrintStream(soc.getOutputStream());
printStream.println("hi");
InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
BufferedReader bufferedReader = new BufferedReader(Inputreader);
String receivedMsg = bufferedReader.readLine();
System.out.println(receivedMsg);
}
}
我的服务器代码是:
public class ServerSide {
private PrintStream printStream;
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
ServerSide serverSideInstance = new ServerSide();
serverSideInstance.run();
}
/**
* @throws Exception
*/
public void run() throws Exception{
ServerSocket socket = new ServerSocket(4321);
Socket soc = socket.accept();
InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
BufferedReader bufferedReader = new BufferedReader(Inputreader);
String receivedMsg = bufferedReader.readLine();
System.out.println(receivedMsg);
// parsing client massage
if(receivedMsg.trim().equalsIgnoreCase("hi")){
printStream = new PrintStream(soc.getOutputStream());
printStream.println("hi");
printStream.println("enter number to check ");
InputStreamReader InputreaderForPrimeNumber = new InputStreamReader(soc.getInputStream());
BufferedReader bufferedReaderForPrimeNumber = new BufferedReader(InputreaderForPrimeNumber);
String number = bufferedReaderForPrimeNumber.readLine();
if(isPrime(Integer.parseInt(number))){
printStream.println("yes - it is Prime number :)");
}else{
printStream.println("No - it is not a Prime number :(");
}
}
}
private boolean isPrime(int n) {
for(int i=2;i<n;i++) {
if(n%i==0)
return false;
}
return true;
}
}
公共类服务器端{
私有打印流打印流;
/**
*@param args
*@抛出异常
*/
公共静态void main(字符串[]args)引发异常{
ServerSide serverSideInstance=新的ServerSide();
serverSideInstance.run();
}
/**
*@抛出异常
*/
public void run()引发异常{
ServerSocket=新的ServerSocket(4321);
Socket soc=Socket.accept();
InputStreamReader Inputreader=新的InputStreamReader(soc.getInputStream());
BufferedReader BufferedReader=新的BufferedReader(Inputreader);
字符串receivedMsg=bufferedReader.readLine();
系统输出打印项次(接收DMSG);
//解析客户端消息
if(receivedMsg.trim().equalsIgnoreCase(“hi”)){
printStream=新的printStream(soc.getOutputStream());
printStream.println(“hi”);
printStream.println(“输入要检查的编号”);
InputStreamReader InputreaderForPrimeNumber=新的InputStreamReader(soc.getInputStream());
BufferedReader bufferedReaderForPrimeNumber=新的BufferedReader(InputreaderForPrimeNumber);
字符串编号=bufferedReaderForPrimeNumber.readLine();
if(isPrime(Integer.parseInt(number))){
printStream.println(“是-它是素数:)”;
}否则{
printStream.println(“否-它不是质数:(”);
}
}
}
私有布尔iPrime(int n){
对于(int i=2;i您有一些错误,并且实现实际上还没有完成。
这是您的固定代码。另外,请注意1不是一个质数。
当客户端发送“再见”而不是数字时,对话结束。
服务器:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSide {
private PrintStream printStream;
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
ServerSide serverSideInstance = new ServerSide();
serverSideInstance.run();
}
/**
* @throws Exception
*/
public void run() throws Exception{
ServerSocket socket = new ServerSocket(4321);
Socket soc = socket.accept();
InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
BufferedReader bufferedReader = new BufferedReader(Inputreader);
printStream = new PrintStream(soc.getOutputStream());
while (true){
String receivedMsg = bufferedReader.readLine();
System.out.println(receivedMsg);
// parsing client massage
if(receivedMsg.trim().equalsIgnoreCase("hi")){
printStream.println("hi");
printStream.println("enter number to check: ");
}else if (receivedMsg.trim().equalsIgnoreCase("bye")){
// printStream.println("bye");
break;
}else{
if(isPrime(Integer.parseInt(receivedMsg))){
printStream.println("Yes - it is a prime number :)");
}else{
printStream.println("No - it is not a prime number :(");
}
printStream.println("enter number to check: ");
}
}
}
private boolean isPrime(int n) {
if (n==1) return false;
for(int i=2;i<n;i++) {
if(n%i==0){
return false;
}
}
return true;
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ClientSide {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
ClientSide clientSideInstance = new ClientSide();
clientSideInstance.run();
}
/**
* @throws Exception
*/
public void run() throws Exception{
BufferedReader brr = new BufferedReader(new InputStreamReader(System.in));
Socket soc = new Socket("localhost", 4321);
PrintStream printStream = new PrintStream(soc.getOutputStream());
printStream.println("hi");
InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
BufferedReader bufferedReader = new BufferedReader(Inputreader);
String receivedMsg = bufferedReader.readLine().trim();
System.out.println(receivedMsg);
while (true){
receivedMsg = bufferedReader.readLine();
System.out.println(receivedMsg);
if (receivedMsg.equalsIgnoreCase("enter number to check: ")){
String userMessage = brr.readLine().trim(); // read from stdin
printStream.println(userMessage); // send message/number to server
if (userMessage.equalsIgnoreCase("bye")){
break;
}
receivedMsg = bufferedReader.readLine().trim();
System.out.println(receivedMsg);
}
}
}
}