创建一个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();
}
}
}
}
分享到:
相关推荐
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯...
以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向...
对内的Socket抽象socket地址结构Socket编程-Socket API函数Socket API函数(以WinSock为例)Socket面向TCP/IP
C# Socket异步聊天例,相关介绍参见我的博客
socket网络编程C++版小实验,有客户端和服务器端的源代码。 socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两...
三步学会Java Socket编程 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket...
以聊天为例讲解关于Android_的socket编程,通过一个简单的例子,是大家明白socket的用法,以及多线程在android程序的使用方法。
本例是有关用SOCKET套接字建立网络通讯的程序,希望给有需要的带来帮助
根据套接字类CBlockingsocket来创建、监听、连接建立和消息的接收和发送为例。
Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后...
包含两个文件。 服务器功能:监控端口,等待客户端的请求;建立连接成功后,服务器每输入一次数据,发送一组数据;若输入 q,则停止发送。 客户端功能:向服务器请求建立连接,建立成功后,接收服务器的数据,直到...
MFC简单网络编程例,Socket编程,非常简单的,适合初学的,这是我学习时自己写的
包含100个Java编程示例 涵盖JavaSE Core Java编程 网络Socket JMX消息处理 ui图形处理 I/O操作 以及企业应用中的struts servlet jsp html cookie javaBean EJB JDBC xml操作等
通过一个小的安例,说明java socket中客户端及服务器端的代码写法
随着网络通信技术的不断发展,Socket开发和研究已成为... 本文从多个方面介绍了Socket的应用开发、实现环境以及工作流程,并用JAVA开发工具在Windows NT系统上实现网络通讯为例来对Socket套接字做了更加深入的介绍。
实例262 防止Socket传递汉字乱码 375 实例263 使用Socket传递对象 377 ...实例271 基于Socket的数据库编程 393 实例272 使用Proxy创建代理服务器 396 实例273 使用ProxySelector选择 代理服务器 397
《Visual C++编程技巧精选500例》pdf Visual C++编程技巧精选500例.pdf 第1章 消息框 001 如何创建消息框? 002 如何设置消息框标题? 003 如何使用资源串创建消息框? 004 如何使用资源串动态显示消息框内容? 005 如何...
java socket 简单成绩管理系统 适合有一定JAVA编程基础及socket相关知识的初学者
本文以一个简单的 TCP 协议为例,介绍如何创建基于 TCP 协议的网络程序。 TCP 协议通讯流程 下图描述了 TCP 协议的通讯流程(此图来自互联网): 下图则描述 TCP 建立连接的过程(此图来自互联网): 服务器调用 ...