Socket简单实例(简单实现调用accpet()方法开始监听)
来源:互联网 发布:法律大数据 编辑:程序博客网 时间:2024/06/05 10:09
Socket编程
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
socket的基本操作
- 1、socket()函数
- 2、bind()函数
- 3、listen()、connect()函数
- 4、accept()函数
- 5、read()、write()函数等
- 6、close()函数
简单的实现一个调用accept()方法的测试例子
创建一个SocketClient.java
package com.webService.client;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;/** * 客户端【先启动服务端,再启动客户端】 * 服务端对应的是本包下的SocketServer * @author Administrator * */public class SocketClient {public static void main(String[] args) {try {//1.创建客户端Socket,指定服务器地址和端口Socket socket = new Socket("localhost",8888);//2.获取输入流,向服务器端发送消息OutputStream os = socket.getOutputStream();//字节输出流//将输出流包装为打印流PrintWriter pw = new PrintWriter(os);pw.write("用户名:admin;密码:admin");pw.flush();//关闭输入流socket.shutdownOutput();//获取服务器端的输入流,并将读取服务端的响应信息InputStream in = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(in));String info = "";while((info = br.readLine()) != null){// br.readLine() != nullSystem.out.println("我是客户端,服务端说:" + info);}//关闭资源br.close();in.close();pw.close();os.close();socket.close();} catch (Exception e) {e.printStackTrace();}}}
创建一个SocketServer.java
package com.webService.client;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;/** * 基于TCP协议的Socket通信,实现用户登录 * 服务端 * @author Administrator * */public class SocketServer {public static void main(String[] args) {try {//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口ServerSocket serverSocket = new ServerSocket(8888);//2.调用accpet()方法开始监听,等待客户端的链接System.out.println("*****服务器即将开启,等待客户端链接*****");Socket socket = serverSocket.accept();//3.获取输入流,并读取客户端信息InputStream is = socket.getInputStream();//将字节流转换成字符流InputStreamReader isr = new InputStreamReader(is);//为输入流添加缓冲BufferedReader br = new BufferedReader(isr);//循环读取客户端信息String info = "";while((info = br.readLine()) != null){// br.readLine() != nullSystem.out.println("我是服务器,客户端说:" + info);}socket.shutdownInput();//关闭输入流//4.获取输出流。响应客户端请求OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os);pw.write("欢迎您!");pw.flush();//调用flush()方法,将缓存输出//5.关闭资源pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}
注意:SocketServer.java是服务端的
SocketClient.java 是客户端的
先启动服务端的程序,在启动客户端。不然后报错
显示结果:SocketClient.java 是客户端的
先启动服务端的程序,在启动客户端。不然后报错
服务端显示的是:
*****服务器即将开启,等待客户端链接*****
我是服务器,客户端说:用户名:admin;密码:admin
客户端显示的是:
我是服务器,客户端说:用户名:admin;密码:admin
客户端显示的是:
我是客户端,服务端说:欢迎您!
0 0
- Socket简单实例(简单实现调用accpet()方法开始监听)
- socket 实例实现简单通信
- socket 实例实现简单通信
- 一个简单的socket监听的服务器实例
- 浅述JAVA Socket的简单实例实现
- C语言实现简单的socket实例
- java 网络通信socket实现简单实例
- JAVA RMI(远程方法调用)简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI 远程方法调用简单实例
- RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- JAVA RMI远程方法调用简单实例
- 无参方法调用的简单实例
- BZOJ4439——[Swerc2015]Landscaping
- Mybatis中运用小技巧(二) like的使用
- javascript正则RegExp.test()需要注意:不具有可重入性
- 欢迎使用CSDN-markdown编辑器备份
- 带头双向循环链表的插入和删除
- Socket简单实例(简单实现调用accpet()方法开始监听)
- hash
- 字符串匹配的BM算法讲解(不含代码)
- python文本分类准备工作-扩展库的安装
- PHP 安全性漫谈 Linux+Apache+Mysql+PHP
- Volley(1)—发送get和post请求
- js+css实现回到顶部按钮(back to top)
- getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用
- 在当前文件夹下打开cmd命令