Java Socket通信 客户端与服务器端的连接 和信息传输

一.建立客户端和服务器端的连接。

方法分2步:

1.在客户端创建Socket对象,用来发送连接请求

2.在服务器端穿件ServerSocket对象,用来接收请求。


//客户端
public class socket1 {
	Socket socket;
	public static void main(String[] args) {
		new socket1().setUpInternetWoring();
	}
	
	void setUpInternetWoring(){
		try {
			//建立Socket对象设置要连接的IP地址和客户端的端口号
			socket = new  Socket("127.0.0.1",888);
			
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				socket.close();	//要关闭
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}



//服务器端
public class server1{
	public static void main(String[] args) {
		try {
			ServerSocket server = new ServerSocket(888);//建立监听对象sever 监听端口号888
			Socket LinkSocket = server.accept(); //接收请求信息 并返回请求对象
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			
		}
		
	}
}



二.实现客户端和服务器端的通信。

方法很简单:

对客户端而言,一方面要接收信息,另一方面要发送信息。

对服务器端而言,和客户端是一样的。

为了实现这两个功能,用到了I/O流。使用socket是两个函数:

1.getInputStream(); 从建立的通道中读取信息

2.getOutputStream(); 向建立的通道中写入信息


具体方法是:

1:建立BufferedReader的对象来存储通道中读取的信息

2:建立PrintWriter的对象,通过println()方法向通道中写入信息


客户端通信伪代码:

Socket socket;
BufferedReader reader;
PrintWriter writer;

void setUpInternetWoring(){
		try {
			//建立Socket对象设置要连接的IP地址和客户端的端口号
			socket = new  Socket("127.0.0.1",888);
			System.out.println("连接成功");
			
			//读信息
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String message = null;
			while((message = reader.readLine())!=null){
				System.out.println(message);//读取到的信息
			}
			//写信息  服务器端通过reader读到的信息就是这里发送的信息
			writer = new PrintWriter(socket.getOutputStream());
			writer.println("要发送的信息,怎么输入的都行");
			writer.flush();//刷新,让服务器端马上接收到信息
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				//用完要关闭,避免资源浪费
				reader.close();
				writer.close();
				socket.close();	//要关闭
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	



其实服务器端和客户端代码是一样的。
服务器端通信伪代码:

BufferedReader reader;
PrintWriter writer;
Socket LinkSocket;

void setUpNetworking(){
		try {
			ServerSocket server = new ServerSocket(888);//建立监听对象sever 监听端口号888
			LinkSocket = server.accept(); //接收请求信息 并返回请求对象
			//读信息
			reader = new BufferedReader(new InputStreamReader(LinkSocket.getInputStream()));
			String message = null;
			while((message=reader.readLine())!=null){
				System.out.println(message);
			}
			//写信息
			writer = new PrintWriter(LinkSocket.getOutputStream());
			writer.println("要写入 的信息");
			writer.flush();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			
			try {
				reader.close();
				writer.close();
				LinkSocket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值