java socket内容回顾

         服务器端:首先要定义一个服务器端。也就是: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();
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值