服务器端:首先要定义一个服务器端。也就是:new serversocket,在new的时候要注明服务器端的端口号。想一想如果没有端口号规定的话,服务器如何知道该请求的响应端口呢。向浏览器的端口是80;定义端口后接收到客户端的请求后建立通讯连结,即:server.getsocket();
在建立通讯连接后获取到连接的读取和写入的字符流,通过字符流来对通讯消息进行消息传递。具体代码如下:
服务器端代码:
package team.projectsocket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class serverClient {
public static void main(String[] args) throws Exception {
//创建服务端
ServerSocket server = new ServerSocket(50250);
//通过监听获取到连接嵌套字
Socket clientSocket = server.accept();
String readermassage = "";
InputStream is = clientSocket.getInputStream();
OutputStream os = clientSocket.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
do{
//判断有无可读取数据,尝试过不添加,程序会线程卡死
if(is.available() >0){
readermassage = reader.readLine();
if(readermassage != null){
System.out.println(readermassage);
//加上\n是为了bufferedreader读取一行,是一行结束的标志
os.write("test\n".getBytes());
}else{
readermassage = "";
}
}
}while(!readermassage.equals("结束"));
is.close();
os.close();
}
}
客户端代码:
package team.projectsocket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class socketClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 50250);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
for(int i =0;i<10;i++){
os.write(new String("第"+ i + "次\n").getBytes());
System.out.println(bf.readLine());
}
os.write("结束\n".getBytes());
is.close();
os.close();
}
}