Java Socket--TCP编程实例
来源:互联网 发布:淘宝供销怎么改分销 编辑:程序博客网 时间:2024/06/05 19:35
服务器端:
1:创建ServerSocket对象,绑定监听端口
2:通过accept()方法监听客户端请求
3:连接建立后。通过输入流InputStream读取客户端的请求信息
4:通过输入流向客户端发送响应信息
5:关闭相关资源
客户端:
1:创建Socket对象,指明需要连接的服务器的地址和端口号
2:连接建立后,通过输出流向服务器端发送请求信息
3:通过输入流获取服务器响应的信息
客户端:::
客户端:::
多启动几个客户端就可以查看效果
1:创建ServerSocket对象,绑定监听端口
2:通过accept()方法监听客户端请求
3:连接建立后。通过输入流InputStream读取客户端的请求信息
4:通过输入流向客户端发送响应信息
5:关闭相关资源
客户端:
1:创建Socket对象,指明需要连接的服务器的地址和端口号
2:连接建立后,通过输出流向服务器端发送请求信息
3:通过输入流获取服务器响应的信息
4:关闭资源
服务器端:::
package TCP;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 Service1 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stub//第一步 :建立服务器端serverSocket ServerSocket service=new ServerSocket(8888); Socket socket=null; System.out.println("服务器端正在等待客户端响应!!!"); //第二步:监听此端口 ,并返回一个Socket socket=service.accept(); //第三步:获取输入流 通过输入流读取客户端请求 InputStream is=socket.getInputStream(); InputStreamReader isr=new InputStreamReader(is); BufferedReader br=new BufferedReader(isr); String info=null; while((info=br.readLine())!=null){ System.out.println("服务器端接收客户端的数据为:"+info); } socket.shutdownInput(); /* * ---------------------- * 响应客户端请求 */ OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); pw.write("欢迎你:小伙子"); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); service.close(); }}
客户端:::
package TCP;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 Client1 {public static void main(String[] args) throws UnknownHostException, IOException {// TODO Auto-generated method stub//第一步:创建socket指明需要接收的的端口和主机 Socket socket=new Socket("localhost",8888); //第二步:通过输出流发送请求 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); pw.write("用户名:admin 密码:123"); pw.flush(); socket.shutdownOutput(); /* * -------- * 获取服务器端响应信息 */ InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String info=null; while((info=br.readLine())!=null){ System.out.println("服务器响应说:"+info); } is.close(); br.close(); pw.close(); os.close(); socket.close(); }}注意:
资源的关闭:打开的顺序和关闭的顺序是相反的 最先打开什么 最后关闭什么 不然容易出现connection reset等错误
PrintWriter输出流必须flush一下 不然在服务器端看不到输出流的字符串
先启动服务器端 再启动客户端
socket,getInputStream /outputStream获取的是字节流
如何用多线程实现一个服务器端 多个客户端::::
服务器端::
package TCP;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.InetAddress;import java.net.ServerSocket;import java.net.Socket;public class Service1 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stub//第一步 :建立服务器端serverSocket ServerSocket service=new ServerSocket(8888); Socket socket=null; System.out.println("服务器端正在等待客户端响应!!!"); int count=0; while(true){ //第二步:监听此端口 ,并返回一个Socket socket=service.accept(); SocketThread1 socketthread=new SocketThread1(socket); socketthread.start(); count++; System.out.println("客户端的数量:"+count);InetAddress address=socket.getInetAddress();System.out.println("当前客户端的IP:"+address.getHostAddress()); } }}
客户端:::
package TCP;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 Client1 {public static void main(String[] args) throws UnknownHostException, IOException {// TODO Auto-generated method stub//第一步:创建socket指明需要接收的的端口和主机 Socket socket=new Socket("localhost",8888); //第二步:通过输出流发送请求 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); pw.write("用户名:admin 密码:123"); pw.flush(); socket.shutdownOutput(); /* * -------- * 获取服务器端响应信息 */ InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String info=null; while((info=br.readLine())!=null){ System.out.println("服务器响应说:"+info); } is.close(); br.close(); pw.close(); os.close(); socket.close(); }}
线程处理类:::
package TCP;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;public class SocketThread1 extends Thread{private Socket socket=null;public SocketThread1(Socket socket){this.socket=socket;}public void run(){InputStream is=null; BufferedReader br=null; InputStreamReader isr=null; OutputStream os=null; PrintWriter pw=null;try {is = socket.getInputStream(); isr=new InputStreamReader(is); br=new BufferedReader(isr); String info=null; while((info=br.readLine())!=null){ System.out.println("服务器端接收客户端的数据为:"+info); } socket.shutdownInput(); /* * ---------------------- * 响应客户端请求 */ os=socket.getOutputStream(); pw=new PrintWriter(os); pw.write("欢迎你:小伙子"); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{//关闭资源try {if(pw!=null)pw.close();if(os!=null)os.close();if(br!=null)br.close();if(isr!=null)isr.close();if(is!=null)is.close();if(socket!=null)socket.close();} catch (IOException e) {e.printStackTrace();}}}}
多启动几个客户端就可以查看效果
阅读全文
0 0
- Java Socket--TCP编程实例
- Tcp Socket编程实例
- socket编程实例TCP
- java tcp socket实例
- windows socket 编程实例--TCP
- Java TCP Socket编程
- Java TCP Socket编程
- java tcp socket编程
- JAVA TCP/IP Socket实例
- java Socket 编程实例
- JAVA socket编程实例
- java Socket 编程实例
- JAVA socket编程实例
- JAVA socket编程实例
- JAVA socket编程实例
- JAVA socket编程实例
- JAVA socket编程实例
- JAVA socket编程实例
- notifyDataSetChanged无效的解决方法
- word2vec使用过程(Java版)
- 关于拍照那些事
- 什么是数据驱动编程
- jdk环境变量配置的问题
- Java Socket--TCP编程实例
- 数据库范式
- urlencode & quote & unquote (url 中带中文参数)
- 浏览器兼容性测试的分类
- VS中Debug模式和Release模式的区别
- "HEVC Complexity and Implementation Analysis"阅读笔记
- STM32外部中断(EXTI)分析和应用
- poj 2109 Power of Cryptography
- JSON.parse()方法,将数据(字符串)转化为javascript对象