网络编程的原理(端口与服务器互相对话)
来源:互联网 发布:网络推广是做什么的 编辑:程序博客网 时间:2024/05/18 08:57
网络编程的原理:
1. 客户端
(1) 创建Socket对象,指明需要连接的服务器地址和端口;
(2) 连接建立后,通过输出流向服务器端发送请求信息;
(3) 通过输入流获取服务器端返回的响应信息;
(4) 关闭响应资源。
1.1服务器端
(1) 创建ServerSocket对象,绑定监听端口;
(2) 通过accept()方法监听客户端请求;
(3) 连接建立后,通过输入流读取客户端发送的请求信息;
(4) 通过输出流向客户端发送相应信息;
(5) 关闭响应资源。
代码如下
package pack;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.BufferOverflowException;
/**
* 服务器端:1.创建serverSocket对象,绑定监听端口
* 2.通过accept()方法监听客户端请求
* 3.连接建立后,通过输出流读取客户端发送的请求信息
* 4.通过输出流向客户端发送相应信息
* 5.关闭相应资源
* @author Administrator
*
*/
public class TestClinent {
@SuppressWarnings(“resource”)
public static void main(String[] args) throws UnknownHostException, IOException {
//向服务器发送消息
//(1) 创建Socket对象,指明需要连接的服务器地址和端口;
Socket s = new Socket(“127.0.0.1”,8888);
//(2) 连接建立后,通过输出流向服务器端发送请求信息;
OutputStream os = s.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
String a=”你好,世界”;
bos.write(a.getBytes());
bos.flush();
s.shutdownOutput();
//接受服务器消息
//(3) 通过输入流获取服务器端返回的响应信息;
InputStream is = s.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte []b=new byte[1024];
while (bis.read(b)!=-1) {
System.out.println(new String(b));
}
//(4) 关闭响应资源。
s.shutdownInput();
bis.close();
is.close();
bos.close();
os.close();
s.close();
}
}
package pack;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器端
* (1) 创建ServerSocket对象,绑定监听端口
* (2) 通过accept()方法监听客户端请求;
* (3) 连接建立后,通过输入流读取客户端发送的请求信息;
* (4) 通过输出流向客户端发送相应信息;
* (5) 关闭响应资源。
* @author Administrator
*
*/
public class TestServer {
public static void main(String[] args) throws IOException {
//我是服務器接受接受客户端信息
//(1) 创建ServerSocket对象,绑定监听端口
ServerSocket ss = new ServerSocket(8888);
//(2) 通过accept()方法监听客户端请求
Socket a = ss.accept();
//(3) 连接建立后,通过输入流读取客户端发送的请求信息;
InputStream is = a.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte []b=new byte[1024];
while (bis.read(b)!=-1) {
System.out.println(new String(b));
}
a.shutdownInput();
//向客户端发送消息
//(4) 通过输出流向客户端发送相应信息;
OutputStream os = a.getOutputStream();
String s1=”您的信息已收到”;
BufferedOutputStream bos=new BufferedOutputStream(os);
bos.write(s1.getBytes());
//(5) 关闭响应资源。
bos.flush();
a.shutdownOutput();
bos.close();
os.close();
bis.close();
is.close();
a.close();
ss.close();
}
}
- 网络编程的原理(端口与服务器互相对话)
- 基于TCP/UDP的Socket网络通信系列之客户端与服务器的简单对话(三)
- Java网络编程 - 浅析web服务器与浏览器的实现原理
- Java网络编程 - 浅析web服务器与浏览器的实现原理
- Windows下使用winsock2与完成端口(IOCP)编写高伸缩性的网络服务器
- 网络编程 — 端口的认识与了解
- 系统编程之网络编程(TCP客户端与服务器的搭建)
- Kerberos协议的原理(对话版)
- Kerberos的原理对话
- java se 面向网络的编程(IP,端口,协议)
- [技术讨论]结对编程与交换编程的对话
- 《编程人生》--与编程大师们的对话
- 网络编程概述和三要素(IP/端口号/协议)以及Socket通信原理
- 【Windows网络编程】完成端口IOCP原理及案例
- MFC网络编程TCP/IP的服务器与客户端代码
- 网络编程之服务器与客户端的建立
- java-socket多线程网络编程案列--搭建本地简易聊天对话服务器
- WebSocket浏览器与服务器之间的对话(用于消息推送)
- 2017.08.08回顾 ensemble
- mybatis笔记-4-注解
- 快速掌握mysql,可备用查找相关用法(吐血整理)
- Kanade's sum 2017多校#3 链表
- 调用Graphics.FromImage()出现OutofMemory的异常
- 网络编程的原理(端口与服务器互相对话)
- uva 11988 Broken Keyboard (a.k.a. Beiju Text)
- hdu 6092 Rikka with Subset
- fail-fast快速失败机制分析
- 银色 MacBook Pro 13.3笔记本
- C语言文件常用操作
- vsftpd简易配置攻略
- 【感悟】本书书名无法描述本书内容(一)
- Python学习笔记·Python语法元素