`

1,socket编程小例

 
阅读更多

创建一个EchoServer和一个EchoClient类,EchoServer用于从监听从客户端输入的字符串,当客户端输入"bye"时停止

 

package com.test.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;

public class EchoServer {
	private int port = 8000;
	private ServerSocket serverSocket;
	
	public static void main(String[] args) throws IOException {
		new EchoServer().service();
	}
	
	public EchoServer() throws IOException {
		serverSocket = new ServerSocket(port);
		System.out.println("服务器启用");
	}
	
	public String echo(String msg) {
		return "echo: " + msg;
	}

	private PrintWriter getWriter(Socket socket) throws IOException {
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut, true);
	}

	private BufferedReader getReader(Socket socket) throws IOException {
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	public void service(){
		while(true){
			Socket socket = null;
			try{
				socket = serverSocket.accept();
				System.out.println("new connection accepted "
						+ socket.getInetAddress() + ":" + socket.getPort());
				BufferedReader br = getReader(socket);
				PrintWriter pw = getWriter(socket);
				String msg = null;
				while((msg =br.readLine()) != null){//输入,读取客户端的输入
					System.out.println(msg);
					pw.println(echo(msg));//输出,返回到客户端
					if(msg.endsWith("bye")){
						break;
					}
				}
			}catch (Exception e) {
				e.printStackTrace();
			}finally{
				try{
					if(socket != null){
						socket.close();
					}
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

package com.test.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.Socket;
import java.net.UnknownHostException;

public class EchoClient {
	private String host = "localhost";
	private int port = 8000;
	private Socket socket;
	
	public EchoClient() throws UnknownHostException, IOException {
		socket = new Socket(host,port);
	}
	
	public static void main(String[] args) throws UnknownHostException, IOException{
		new EchoClient().talk();
	}
	
	private PrintWriter getWriter(Socket socket)throws IOException{
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut,true);
	}
	
	private BufferedReader getReader(Socket socket)throws IOException{
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	public void talk()throws IOException{
		try{
			BufferedReader br = getReader(socket);
			PrintWriter pw = getWriter(socket);
			BufferedReader localReader  = new BufferedReader(new InputStreamReader(System.in));
			String msg = null;
			while((msg = localReader.readLine()) !=null ){//读取在管理控制台输入的字符串
				pw.println(msg);//向服务器端传送字符串
				System.out.println(br.readLine());//读取服务器端返回的字符串
				if(msg.equals("bye")){
					break;
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			try{
				socket.close();
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
 
分享到:
评论

相关推荐

    C语言的Socket编程例TCP协议

    socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯...

    Socket编程

    以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向...

    2.7Socket编程1

    对内的Socket抽象socket地址结构Socket编程-Socket API函数Socket API函数(以WinSock为例)Socket面向TCP/IP

    C# Socket异步聊天例

    C# Socket异步聊天例,相关介绍参见我的博客

    socket网络编程C++版

    socket网络编程C++版小实验,有客户端和服务器端的源代码。 socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两...

    三步学会Java Socket编程

    三步学会Java Socket编程  所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。  以J2SDK-1.3为例,Socket和ServerSocket...

    以聊天为例讲解关于Android_的socket编程

    以聊天为例讲解关于Android_的socket编程,通过一个简单的例子,是大家明白socket的用法,以及多线程在android程序的使用方法。

    vc有关SOCKET编程例子

    本例是有关用SOCKET套接字建立网络通讯的程序,希望给有需要的带来帮助

    VC++下实现SOCKET编程方法

    根据套接字类CBlockingsocket来创建、监听、连接建立和消息的接收和发送为例。

    Linux-Socket-服务器编程实例.pptx

    Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后...

    windows平台下socket编程之TCP

    包含两个文件。 服务器功能:监控端口,等待客户端的请求;建立连接成功后,服务器每输入一次数据,发送一组数据;若输入 q,则停止发送。 客户端功能:向服务器请求建立连接,建立成功后,接收服务器的数据,直到...

    MFC简单网络编程例

    MFC简单网络编程例,Socket编程,非常简单的,适合初学的,这是我学习时自己写的

    Java编程百例

    包含100个Java编程示例 涵盖JavaSE Core Java编程 网络Socket JMX消息处理 ui图形处理 I/O操作 以及企业应用中的struts servlet jsp html cookie javaBean EJB JDBC xml操作等

    Java Socket 聊天小程序

    通过一个小的安例,说明java socket中客户端及服务器端的代码写法

    基于Socket网络通信协议的应用研究

    随着网络通信技术的不断发展,Socket开发和研究已成为... 本文从多个方面介绍了Socket的应用开发、实现环境以及工作流程,并用JAVA开发工具在Windows NT系统上实现网络通讯为例来对Socket套接字做了更加深入的介绍。

    Java经典的编程(300例).rar

    实例262 防止Socket传递汉字乱码 375 实例263 使用Socket传递对象 377 ...实例271 基于Socket的数据库编程 393 实例272 使用Proxy创建代理服务器 396 实例273 使用ProxySelector选择 代理服务器 397

    Visual C++编程技巧精选500例.pdf

    《Visual C++编程技巧精选500例》pdf Visual C++编程技巧精选500例.pdf 第1章 消息框 001 如何创建消息框? 002 如何设置消息框标题? 003 如何使用资源串创建消息框? 004 如何使用资源串动态显示消息框内容? 005 如何...

    java socket 简单成绩管理系统

    java socket 简单成绩管理系统 适合有一定JAVA编程基础及socket相关知识的初学者

    Linux Socket 编程简介和实现

    本文以一个简单的 TCP 协议为例,介绍如何创建基于 TCP 协议的网络程序。 TCP 协议通讯流程 下图描述了 TCP 协议的通讯流程(此图来自互联网): 下图则描述 TCP 建立连接的过程(此图来自互联网): 服务器调用 ...

Global site tag (gtag.js) - Google Analytics