用JAVA SOCKET编程,客户端输入一段字符,服务器端接收后返回给客户端
2010-10-30 17:38
459 查看
Server端:
package com.hqh.hello.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static final int SERVER_PORT = 8888;
public void startServer() {
try {
// 创建绑定到特定端口的服务器套接字。
ServerSocket ss = new ServerSocket(SERVER_PORT);
// 时刻监听客户端的连接
while (true) {
System.out.println("等待客户端发起连接。。。");
// 接受客户端的连接
Socket s = ss.accept();
//获取客户端的IP和端口,并打印出来
String RemoteIP = s.getInetAddress().getHostAddress();
String RemotePort = ":" + s.getLocalPort();
System.out.println("A client come in!IP:" + RemoteIP
+ RemotePort);
// 得到接收的这个Socket的输入流,并封装成一个BufferedReader()
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
// 将从客户端接收到的数据再发送回客户端
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
String clientMsgString = br.readLine();
//服务器端控制台打印出接受到的消息
System.out.println("The Client Say:"+clientMsgString);
//向客户端问好
pw.println("Hello,"+clientMsgString+". Nice to meet you!");
// 关闭相应的资源
br.close();
pw.close();
s.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server().startServer();
}
}
Client端:
package com.hqh.hello.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public void connServer() {
try {
// 建立与服务器端的链接
Socket s = new Socket("localhost", Server.SERVER_PORT);
System.out.println("Please enter Your Name and Press Enter key:");
// 监听键盘事件,等待用户输入字符串
Scanner sc = new Scanner(System.in);
// 得到Socket的输入流封装成一个PrintWriter
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
// 把用户输入的字符写出去
pw.println(sc.nextLine());
// 得到服务器端的输入流并封装成BufferedReader对象
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
System.out.println("服务器发送给我的数据:"+br.readLine());
} catch (UnknownHostException e) {
System.err.println("找不到你指定的主机!"+e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
public static void main(String[] args) {
new Client().connServer();
}
}
测试结果:
1、首先运行Server类,控制台输出:等待客户端发起连接。。。
2、运行Client类,控制台提示:Please enter Your Name and Press Enter key:
同时服务器端输出:A client come in!IP:127.0.0.1:8888
3、输入你的名字回车:Please enter Your Name and Press Enter key:
千好
4、服务器端接收到客户端输入的字符:The Client Say:千好
5、客户端收到服务器端发来的问候:服务器发送给我的数据:Hello,千好. Nice to meet you!
package com.hqh.hello.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static final int SERVER_PORT = 8888;
public void startServer() {
try {
// 创建绑定到特定端口的服务器套接字。
ServerSocket ss = new ServerSocket(SERVER_PORT);
// 时刻监听客户端的连接
while (true) {
System.out.println("等待客户端发起连接。。。");
// 接受客户端的连接
Socket s = ss.accept();
//获取客户端的IP和端口,并打印出来
String RemoteIP = s.getInetAddress().getHostAddress();
String RemotePort = ":" + s.getLocalPort();
System.out.println("A client come in!IP:" + RemoteIP
+ RemotePort);
// 得到接收的这个Socket的输入流,并封装成一个BufferedReader()
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
// 将从客户端接收到的数据再发送回客户端
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
String clientMsgString = br.readLine();
//服务器端控制台打印出接受到的消息
System.out.println("The Client Say:"+clientMsgString);
//向客户端问好
pw.println("Hello,"+clientMsgString+". Nice to meet you!");
// 关闭相应的资源
br.close();
pw.close();
s.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server().startServer();
}
}
Client端:
package com.hqh.hello.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public void connServer() {
try {
// 建立与服务器端的链接
Socket s = new Socket("localhost", Server.SERVER_PORT);
System.out.println("Please enter Your Name and Press Enter key:");
// 监听键盘事件,等待用户输入字符串
Scanner sc = new Scanner(System.in);
// 得到Socket的输入流封装成一个PrintWriter
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
// 把用户输入的字符写出去
pw.println(sc.nextLine());
// 得到服务器端的输入流并封装成BufferedReader对象
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
System.out.println("服务器发送给我的数据:"+br.readLine());
} catch (UnknownHostException e) {
System.err.println("找不到你指定的主机!"+e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
public static void main(String[] args) {
new Client().connServer();
}
}
测试结果:
1、首先运行Server类,控制台输出:等待客户端发起连接。。。
2、运行Client类,控制台提示:Please enter Your Name and Press Enter key:
同时服务器端输出:A client come in!IP:127.0.0.1:8888
3、输入你的名字回车:Please enter Your Name and Press Enter key:
千好
4、服务器端接收到客户端输入的字符:The Client Say:千好
5、客户端收到服务器端发来的问候:服务器发送给我的数据:Hello,千好. Nice to meet you!
相关文章推荐
- 基础学习:控制台接收输入字符与重定向输出流实现程序日志两例子的编程
- linux 不回车直接读取一个字符的方法(termios结构的描述了终端的模式,在这段代码中我们改变了它,使得终端能够接收到键盘输入马上返回。)
- Java socket编程服务器端/客户端代码编写示例
- Linux网络编程之UDP编程,客户端标准输入给服务器端
- Socket编程如何实现服务器端接收客户端数据
- c编程:输入一个字符串,求出字符串的最后一个字符,如果是空字符串则返回空字符。
- java socket编程 初级 服务器端和客户端 通信
- Java经典编程300例之实例012 从控制台接收输入字符
- java socket编程 初级 服务器端和客户端 通信
- js控制输入框输入字符数 客户端textarea与服务器端textBox的使用区别
- JAVA SOCKET网络编程,服务端接收多个客户端连接的实现
- java网络编程客户端输入字符串,服务器端将其反转后输出给客户端,客户端显示出来
- linux下的网络程序0——服务器端返回客户端输入
- 编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端的程序;
- TCP编程例三:从客户端发送文件给服务器端,服务器端保存到本地,并返回“发送成功”给客户端。
- 从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt
- 27-网络编程-21-网络编程(了解客户端和服务器端原理)
- 服务器端根据数据库图片的url获取保存的图片并进行缩略后返回给客户端-压缩之Thumbnails
- java Socket编程从客户端将数据写到流中时用PrintWriter替换BuferedWriter
- socket编程(2)-----基于UDP的客户端和服务器端的实现