文档章节

Socket——服务端与客户端交互的简单实现

只会写bug
 只会写bug
发布于 2015/09/02 02:28
字数 480
阅读 173
收藏 1

服务端:

package socket;

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;
/**
 *socket服务端 
 *
 */
public class TCPServer {

	public static void main(String[] args) {
		try {
			// 创建一个服务端socket实例,并绑定指定端口,同时监听该端口
			ServerSocket serversocket = new ServerSocket(7777);
			//调用accept()启动端口监听,等待客户端请求
			System.out.println("服务端已启动,正在监听......");
			Socket socket = serversocket.accept();//监听7777端口
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			
			String info = br.readLine();
			while(!"".equals(info) && info != null){
				System.out.println("服务端捕获到客户端信息:######"+info);
				info = br.readLine();
			}
			//关闭相关资源
			socket.shutdownInput();
			//服务端创建输出流,响应客户端请求
			OutputStream os = socket.getOutputStream();
			PrintWriter pw = new PrintWriter(os);
			pw.write("用户名密码正确,欢迎登陆");
			pw.flush();
			//关闭相关资源
			socket.shutdownOutput();
			
			//关闭其他资源
			pw.close();
			os.close();
			br.close();
			isr.close();
			is.close();
			socket.close();
			serversocket.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

	}

}

输出结果:

服务端已启动,正在监听......

服务端捕获到客户端信息:######用户名:admin   密码:1234


客户端:

package socket;

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;
import java.net.UnknownHostException;


public class TCPClient {

	public static void main(String[] args) {
		
		try {
			//创建客户端socket,指定服务端地址和端口
			Socket socket = new Socket("localhost", 7777);
			//建立一个输出流,用于向服务端发送信息
			OutputStream os = socket.getOutputStream();
			//创建一个打印流并包装输出流
			PrintWriter pw = new PrintWriter(os);
			pw.write("用户名:admin   密码:1234");
			pw.flush();//刷新缓存
			//关闭资源
			socket.shutdownOutput();
			
			//创建输入流,用于读取服务端响应信息
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String serinfo = br.readLine();
			while(!"".equals(serinfo) && serinfo != null){
				System.out.println("客户端获取服务端响应信息:*****"+serinfo);
				serinfo = br.readLine();
			}
			socket.shutdownInput();
			
			br.close();
			isr.close();
			is.close();
			pw.close();
			os.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

输出结果:

客户端获取服务端响应信息:*****用户名密码正确,欢迎登陆

© 著作权归作者所有

只会写bug
粉丝 5
博文 16
码字总数 21634
作品 0
深圳
项目经理
私信 提问
Node.js开发入门—套接字(socket)编程

Node.js的net模块提供了socket编程接口,方便我们利用较为底层的套接字接口来实现应用协议。这次我们看一个简单的回显服务器示例,包括服务端和客户端的代码。 使用JavaScript也可以进行套接...

foruok
2015/09/14
0
0
初识websocket

前言:工作中在验证前端页面展示数据时,接触到websocket这一概念,这里粗略记录下关于websocket的理解和常用方式。 (1)什么是websocket? 命名:看起来好像和socket有某种关系,但是根据查...

在你的世界路过
2017/12/08
0
0
socket.io 实现在线聊天室

效果图.gif websocket工作机制 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。websocket链接建立后,服务...

TokenYang
2017/11/13
0
0
dota BP练习工具开发:一个C/S多用户程序

首发:个人博客,更新&纠错&回复 客户端采用C#开发,服务器使用java开发,通信方式为socket。 1.首先决定交互协议 客户端指令协议: getgames:要求服务端发送games指令 creategame:name=xx...

祁达方
2015/11/18
163
0
Node.js开发入门—UDP编程

Node.js也提供了UDP编程的能力,相关类库在“dgram”模块里。 与TCP不同,UDP是无连接的,不保障数据的可靠性,不过它的编程更为简单,有时候我们也需要它。比如做APP的统计或者日志或者流媒...

foruok
2015/09/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
14分钟前
9
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
21分钟前
6
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
28分钟前
6
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
47分钟前
10
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部