利用java网络编程实现客户端跟服务器之前相互发送接受消息的功能,首先启动服务器,然后运行客户端,接着在客户端的控制台下,发送消息,然后切换到服务器控制台,即可看到客户端的消息,并对其进行回复,然后切换到服务端的客户端控制台,查看到效果,以达到相互通信发消息的功能,效果图如下:
首先新建一个java项目,并新建SocketService.java,代码如下:
package ch03;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketService
{
public static void main(String[] args) throws Exception
{
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
//创建一个ServerSocket在端口4700监听客户请求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出错,打印出错信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
}catch(Exception e) {
System.out.println("Error."+e);
//出错,打印出错信息
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:"+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=sin.readLine();
//从标准输入读入一字符串
while(!line.equals("bye")){
//如果该字符串为 "bye",则停止循环
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Client:"+is.readLine());
//从Client读入一字符串,并打印到标准输出上
line=sin.readLine();
//从系统标准输入读入一字符串
}
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
server.close(); //关闭ServerSocket
}catch(Exception e){
System.out.println("Error:"+e);
//出错,打印出错信息
}
}
}
然后,新建SocketClient.java,代码如下:
package ch03;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class SocketClient
{
public static void main(String[] args)
{
try{
Socket socket=new Socket("127.0.0.1",4700);
//向本机的4700端口发出客户请求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
String readline;
readline=sin.readLine(); //从系统标准输入读入一字符串
while(!readline.equals("bye")){
//若从标准输入读入的字符串为 "bye"则停止循环
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Server:"+is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=sin.readLine(); //从系统标准输入读入一字符串
} //继续循环
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e) {
System.out.println("Error"+e); //出错,则打印出错信息
}
}
}
最后,先运行SocketService.java,开出通信的端口号等等,再运行SocketClient.java,去根据端口,ip等进行连接,然后就可以通信了,如上图所示,客户端发完一条后,服务端可以马上收到,并进行回复,然后客户端就会立刻收到服务端的回复,以此循环进行通信。
- 大小: 27.1 KB
- 大小: 34.7 KB
- 大小: 34.9 KB
分享到:
相关推荐
类似友善串口助手的一个小工具,功能更多更强大,各类主流plc的数据调试和串口调试类似友善串口助手的一个小工具,功能更多更强大,各类主流plc的数据调试和串口调试
这是一个简单的模拟android通信,这也是第一篇博客描述的项目,他实现了用python脚本充当服务端,android下写客户端,tcp模式连接,通过socket连接到服务端,实现简单的信息传递
实现简单的 Socket --TCP/IP 通信。 其实,使用的类 和语法代码与 普通PC机的一样。但 手机客户端,还是有点点区别。 在pc客户端中,使用线程收取 信息,然后打印到UI控件上,是使用委托进行。 在手机APP中,有...
实现Socket客户端和服务端,模拟消息发送和接收,实现客户端和服务端通信;
java基于socket通信的模拟路灯控制系统源码。socket通信,远程控制路灯的开关,以及采集周围环境信息(温湿度等) 普通的java的swing项目,克隆下来运行即可,环境量都是模拟的。 不过记得先运行服务端再运行客户端...
主要介绍了Python 网络编程之TCP客户端/服务端功能,结合实例形式分析了Python使用socket套接字实现TCP协议下的客户端与服务器端数据传输操作技巧,需要的朋友可以参考下
tcp udp 模拟客户端、服务端,对于网络通信,调试非常方便,希望能给大家带来便利
C#.net同步异步SOCKET通讯和多线程总结 ...服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信。
网络通信工具,服务端和客户端连接测试工具,可单条发送,循环发送,模拟多客户端发送,本工具可以作为网络通信工具或压力测试工具, Java NIO Socket编程,需JAVA运行环境
产生一个新的代理socket和客户端进行通信(原来的侦听端口的socket释放,继续侦听其他客户端的请求)同时开启一个新的线程接收客户端消息 5.分析客户端的请求报文,对请求的文件返回响应报文 http/1.1中的长连接的...
内含5个socket的通信实例,实现客户端与服务端之间的信息交流,从简单到复杂,有模拟QQ通信功能,很好的让你理解socket通信。
TCP、UDP通信测试工具,可以模拟socket客户端与服务端做代码测试
在完成客户端与服务端通信的基础上,开发断点续传的模拟功能,实现在接收文件时,可以用暂停,并且在重新开始时将文件写入指定位置
> * client 作为模拟客户端,跟server1建立连接后,不断给服务端发送假数据 整个项目启动后,主要做了下面几件事: - [ ] 创建socket server和socket client,并建立连接 - [ ] 执行定时任务,每5秒socket server往...
1、支持TCP/IP协议的网络通信,TCP服务端和客户端,可单条发送,循环发送,模拟多客户端发送; 2、支持HTTP协议的网络通信, HTTP协议的服务端和客户端连接测试工具; 3、网络扫描工具,可扫描主机端口及扫描局域网内的...
1、支持TCP/IP协议的网络通信,TCP服务端和客户端,可单条发送,循环发送,模拟多客户端发送; 2、支持HTTP协议的网络通信, HTTP协议的服务端和客户端连接测试工具; 3、网络扫描工具,可扫描主机端口及扫描局域网内的...
这是一个基于TCP协议的socket模拟聊天室代码 可以再Linux平台下运行 开启一个服务端 可以开启多个客户端 客户端之间可以进行通信
2、循环接收请求访问该端口的客户端,接收到之后,把该socket存储到ArrayList中,并且为每一个socket开启一个线程用于通信。 3、每个socket的线程的逻辑如下:循环接收客户端发来的消息,接收到之后,利用之前的...
资源包含文件:课程lunwen+客户端服务端源码 模拟服务器的设计采用了经典的服务器监听设计,服务器在端口,8000 进行监听,当有客户端发送消息时开辟一个新的线程对其内容进行处理并回复。 本项目的界面包括客户端和...
基于C/S架构的的socket通信,远程控制路灯的开关,以及采集周围环境信息(温湿度等) 普通的java的swing项目,克隆下来运行即可,环境量都是模拟的。 不过记得先运行服务端再运行客户端