tonglink java 连接 服务端_Java中的服务器与客户端的简单连接

这篇博客介绍了如何使用Java实现服务器与客户端的连接。在同一个PC上,服务器端通过`ServerSocket`监听8008端口,等待客户端连接。一旦连接建立,服务器读取客户端发送的数据并作出响应。客户端通过`Socket`连接到服务器,发送数据并接收服务器的回应。代码中展示了服务器端和客户端的具体实现。
摘要由CSDN通过智能技术生成

Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下。另外还要注意,服务端先于客户端运行,废话不多说,上代码了

package com.myinfo;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

private static Socket accept;

/**

* 服务器端的应用

*

* @param args

*/

public static void main(String[] args) {

try {

// 1.创建Server服务器端的连接,并指定监听端口号

ServerSocket server = new ServerSocket(8008);

// 2.建立accept()连接

System.out.println("服务器即将连接,等待客户端");

Socket socket = server.accept();

// 获取客户端输入流

InputStream is = socket.getInputStream();

// 转换成字符流

InputStreamReader isr = new InputStreamReader(is);

// 添加缓冲流

BufferedReader br = new BufferedReader(isr);

String data = null;

while ((data = br.readLine()) != null) {

// 循环读取

System.out.println("我是服务器端,客户端说:" + data);

}

socket.shutdownInput();//关闭输入流

//注意,此时应先关闭输入流之后才能获取输出流

// 获取服务器端的输出流,响应客户端

OutputStream os = socket.getOutputStream();

PrintWriter pw = new PrintWriter(os); // 包装流

pw.write("你好,客户端");

pw.flush();

// 关闭可关闭的资源

os.close();

pw.close();

is.close();

isr.close();

br.close();

server.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

接下来看客户端

package com.myinfo;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.Socket;

public class Client {

/**

* 客户端

*

* @param args

*/

public static void main(String[] args) {

try {

// 1.建立客户端,输入服务器的地址以及端口

Socket socket = new Socket("localhost", 8008);

// 获取输出流,向服务器打印信息

OutputStream os = socket.getOutputStream();

// 包装成打印流

PrintWriter pw = new PrintWriter(os);

pw.write("用户名:Admin 密码:ck");

pw.flush();

socket.shutdownOutput(); //关闭输出流

//此时应该先关闭输出流然后在开启输入流

// 获取客户端的输入流

InputStream is = socket.getInputStream();

// 转换成字符流

InputStreamReader isr = new InputStreamReader(is);

BufferedReader rd = new BufferedReader(isr); // 转换成缓冲流

String data = null;

while ((data = rd.readLine()) != null) {

// 循环读取

System.out.println("我是客户端,服务器端说:" + data);

}

// 关闭可关闭的资源

rd.close();

is.close();

isr.close();

pw.close();

os.close();

pw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

小白一枚,不足之处,望请指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值