第一个java网络程序,有客户端和服务器端,用socket实现
来源:互联网 发布:eyeone软件 编辑:程序博客网 时间:2024/06/04 18:21
1:服务器端程序 EchoServer
package com.capinfotech.network;
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 EchoServer() throws IOException {
serverSocket = new ServerSocket(port); //初始化ServerSocket
System.out.println("服务器启动");
}
/*
* 组装数据
*/
public String echo(String msg) {
return "echo:" + msg;
}
/*
* 获得PrintWriter对象
*/
private PrintWriter getWriter(Socket socket) {
try {
OutputStream socketOut = socket.getOutputStream();
PrintWriter pw = new PrintWriter(socketOut, true); //参数true表示每写一行,PrintWriter缓存就自动溢出,把数据写到目的地
return pw;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*
* 获得BufferedReader对象
*/
private BufferedReader getReader(Socket socket) throws IOException {
InputStream is = socket.getInputStream();
return new BufferedReader(new InputStreamReader(is));
}
public void service() throws IOException {
while(true) {
Socket socket = null;
try {
socket = serverSocket.accept(); //等待客户连接
//输出客户端的IP和端口号
System.out.println("New Connection accepted" + socket.getInetAddress() + ":" + socket.getPort()); PrintWriter pw = getWriter(socket);
BufferedReader br = getReader(socket);
String msg = null;
while((msg = br.readLine()) != null) {
System.out.println(msg);
pw.println(echo(msg));
if(msg.equals("bye")) {
break;
}
}
} catch(Exception e) {
e.printStackTrace();
} finally {
if(socket != null) {
socket.close();
}
}
}
}
public static void main(String[] args) {
try {
new EchoServer().service();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2:客户端程序EchoClient.java
package com.capinfotech.network;
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 localhost = "localhost";
private int port = 8000;
private Socket socket;
public EchoClient() throws UnknownHostException, IOException {
socket = new Socket(localhost, port); //初始化Socket
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true); //参数true表示每写一行,PrintWriter缓存就自动溢出,把数据写到目的地
}
private BufferedReader getReader(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(socketIn));
return br;
}
public void talk() throws IOException {
try {
PrintWriter pw = getWriter(socket);
BufferedReader br = getReader(socket);
BufferedReader br_in = new BufferedReader(new InputStreamReader(System.in)); //获得系统的输入流(和标准输入有关)
String msg = null;
while((msg = br_in.readLine()) != null) {
pw.println(msg);
System.out.println(br.readLine()); //输出服务器端传过来的程序
if(msg.equals("bye")) {
break;
}
}
} catch(Exception e) {
e.printStackTrace();
} finally {
if(socket != null) {
socket.close();
}
}
}
public static void main(String[] args) throws UnknownHostException, IOException {
new EchoClient().talk();
}
}
- 第一个java网络程序,有客户端和服务器端,用socket实现
- C++ Socket网络通信实现一个服务器端和多个客户端的通信
- 上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信(Java)
- 上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信二(Java)
- java Socket客户端和服务器端
- 【java】:java socket编程实现服务器端和客户端
- java-基本的Socket编程-实现服务器端和客户端通信
- Java中使用Socket实现服务器端和客户端通讯
- 用Socket实现客户端和服务器端通信(完整版)
- socket用线程实现客户端和服务器端连续发送数据
- 实现服务器端和客户端的Socket通信
- java使用socket网络编程实现qq互聊,一个服务器和多个客户端
- VC写的socket程序实现一个简单Echo服务器端和客户端程序
- java网络编程之socket网络编程示例(服务器端/客户端)
- java网络编程之socket网络编程示例(服务器端/客户端)
- 【Java Socket】入门系列 3.2.编程实现基于 TCP 的 Socket 通信 — 服务器端和客户端
- Java网络编程客户端和服务器端
- java网络编程 客户端和服务器端
- tomcat #{..} is not allowed in template text
- C# join DataTable (support Left/Right/Full join)转贴
- window7安装Oracle10g全过程
- How Relative File Numbers Are Generated. [ID 262384.1]
- mysql触发器(trigger)操作memcache
- 第一个java网络程序,有客户端和服务器端,用socket实现
- 在使用CompareValidator对于日期进行验证的时候,最好多一个对于日期格式的验证
- 第 1 部分: Ajax 入门简介
- 自定义控件CS类中注册JS脚本并调用JS事件
- Paul Graham:未来的互联网创业(上)
- Hibernate学习笔记(3):session的get、load、delete方法和Query的简单使用
- C++ 虚函数表解析
- Paul Graham:未来的互联网创业(下)
- Hibernate学习笔记(2):对象的三种状态