TCP面向连接的socket通信

272 篇文章 18 订阅

服务器端的java代码

package com.aaa.servet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;//导入java.net包,用于网络通讯
import java.net.Socket;
/**
 * 这种是基于TCP的案例。
 * @author teayear
 *
 */
public class ServerSocketTest {
	public static void main(String[] args) {
		System.out.println("...启动TCP Socket服务器...");
		//1.初始化服务端Socket并绑定端口为8888
		try {
			ServerSocket serverSocket=new ServerSocket(8888);//需要添加try/catch块
			//2.等待客户端的连接
			Socket socket=serverSocket.accept();
			//3.获取输入流,通过socket对象流,传递给缓冲字符流进行读取;
			BufferedReader bufferReader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
			//4.读取一行数据;
//			String str=bufferReader.readLine();
			String str;
			//4.1升级,通过循环升级接受信息;
			while((str=bufferReader.readLine())!=null){
				//5.输出打印
				System.out.println(str);
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

效果如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientSocket {
	public static void main(String[] args) {
		//1.创建socket对象,建立到服务i端的连接;
		try {
			Socket socket=new Socket("127.0.0.1",8888);
			//2.通过缓冲输出流,包装下socket对象的输出字节流,进行写操作;
			BufferedWriter bufferWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"GBK"));

			//通过标准输入流获取字符流;
			BufferedReader bufferReader=new BufferedReader(new InputStreamReader(System.in,"GBK"));
			//循环升级;
			while(true){
				String str=bufferReader.readLine();
				bufferWriter.write(str);
				bufferWriter.write("\n");
				//3.2还需要将缓冲中的内容放到socket
				bufferWriter.flush();
			}
			//4.注意一定要有关闭连接;
//			socket.shutdownOutput();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}

在服务器端会显示:

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值