为了能使客户成功地连接到服务器,服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。(写的少,之后补充吧)
简单例子实现:
客户端:
client.java
package java随记1;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
public class client {
public static void main(String args[]) {
String []mess = {"第一个问题","第二个问题","第三个问题"};
Socket mysocket;
DataInputStream in = null;
DataOutputStream out = null;
try {
mysocket = new Socket("发送的服务器的ip地址",端口号);
in = new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
for(int i =0;i<mess.length;i++) {
out.writeUTF(mess[i]);
String s = in.readUTF();
System.out.println("客户收到服务器的回答:"+s);
Thread.sleep(500);
}
}
catch(Exception e) {
System,.out.println("服务器已断开"+e);
}
}
}
服务器端
Server.java
package java随记1;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String args[]) {
String []answer = {"第一个问题","第二个问题","第三个问题"};
ServerSocket serverForClient = null;
Socket socketOnServer = null;
DataInputStream in = null;
DataOutputStream out = null;
try {
serverForClient = new ServerSocket(端口号);
}
catch(IOException e){
System.out.println(e);
}
try {
System.out.println("等待客户呼叫");
socketOnServer = serverForClient.accept();//阻塞状态,除非有客户呼叫
out = new DataOutputStream(socketOnServer.getOutputStream());
in = new DataInputStream(socketOnServer.getInputStream());
for(int i =0;i<answer.length;i++) {
String s = in.readUTF();//in读取信息,阻塞状态
System.out.println("服务器收到客户的提问:"+s);
out.writeUTF(answer[i]);
Thread.sleep(500);
}
}
catch(Exception e) {
System,.out.println("客户已断开"+e);
}
}
}