基于TCP/IP的网络编程
来源:互联网 发布:网络小贷公司设立条件 编辑:程序博客网 时间:2024/05/20 08:23
TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
Socket,也在套接字。通常用来实现Client-Server的连接。
它的开发原理:
服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
在客户端如何建立Socket连接?
要连接到其他的机器上,我们会需要Socket的连接。Socket是个代表两台机器之间网络连接的对象。要创建Socket连接要知道两项关于服务器的信息:它在哪里以及用哪个端口来收发数据。也就是说IP地址与端口。
Socket chatSocket = new Socket(“192.168.1.10”,3000);
以上参数分别是IP地址和TCP端口(端口应介于1024~65535之间的数字)。
Socket连接的建立代表两台机器之间存有对方的信息,包括网络地址和TCP端口。
它们彼此知道对方,才能够找到对方进行通信。
在服务端如何建立Socket连接?
服务器应用程序对特定端口创建出ServerSocket,让服务器开始监听来自3000端口的客户请求
ServerSocket server_socket = new ServerSocket(3000);
服务器创建出与客户端通信的新Socket
Socket socket = server_socket.accept();
客户端代码示例(T1_Client.java)
importjava.net.*;
importjava.io.*;
publicclass T1_Client{
public static void main ( String[] args )throws Exception
{
//1、客户端对服务器应用程序建立Socket连接
Socket socket = new Socket("127.0.0.1",5000);
//2、键盘输入流
BufferedReader input = newBufferedReader ( new InputStreamReader ( System.in ) );
//3、从socket对象中获取数据输出对象
PrintWriter output = newPrintWriter ( socket.getOutputStream(),true );
//4、不断获取用户输入,并发送给服务端
while(true){
String lineToBeSent =input.readLine();
//如果用户输入".",终止循环
if ( lineToBeSent.equals ("." ) ) break;
output.println (lineToBeSent );
}
//5、结束通讯
socket.close();
}
}
服务端代码示例(T1_Server.java)
importjava.net.*;
importjava.io.*;
public classT1_Server{
public static void main ( String[] args)throws Exception
{
//1、服务器应用程序对特定端口创建出ServerSocket,让服务器开始监听来自5000端口的客户请求
ServerSocket server_socket = newServerSocket(5000);
//2、服务器等待客户端的连接
while(true){
//服务器创建出与客户端通信的新Socket
Socket socket =server_socket.accept();
BufferedReader input = newBufferedReader ( new InputStreamReader ( socket.getInputStream() ) );
while(true){
String message =input.readLine();
if ( message==null )break;
System.out.println (message );
}
socket.close();
System.out.println ("Connection closed by client" );
}
//accept()方法会在等待用户的Socket连接时闲置着。当一个用户连上来时,此方法会返回一个Socket(在不同的端口上)以便与客户端通信。由于客户端中断连接,才去继续accept()等待下一个客户端进入,因此,无法同时处理多个客户端的连接!!
}
}
- 基于TCP/IP的网络编程步骤
- 基于TCP/IP协议的网络编程
- 基于TCP/IP的网络编程
- 基于TCP/IP协议的网络编程—Socket编程
- 《TCP/IP网络编程》三、基于Linux的编程
- 基于TCP/IP的网络编程接口:Socket
- 基于TCP/IP的网络编程接口:Socket
- 基于TCP的网络编程
- 基于TCP的网络编程
- TCP/IP网络编程 学习笔记_5 --基于TCP的服务端/客服端
- 基于TCP/IP协议的网络攻击
- 基于TCP/IP协议的网络攻击
- 基于TCP/IP协议的网络攻击
- 一种基于TCP/IP协议的网络编程模式(并发式多线程编程)
- TCP/IP网络编程 基于Linux编程_1 --套接字中标准I/O的使用
- TCP/IP网络编程 基于Linux编程_2 --I/O流分离的半关闭问题
- TCP/IP网络编程 基于Linux编程_3 --优于select的epoll
- TCP/IP网络编程 基于Linux编程_4 --多线程服务器端的实现
- python 安装NumPy
- C#自写的一个HTML解析类(类似XElement语法)
- 用JavaScript玩转计算机图形学(二)基本光源
- 使用STL去除std::vector自定义结构体重复项
- 举例配置hadoop完全分布式集群(准备节点数4个,h15、h16、h17、h18)
- 基于TCP/IP的网络编程
- C# Stream 和 byte[] 之间的转换
- C# vs C++ 全局照明渲染性能比试
- 如何在手机浏览器使用调试工具
- git 命令
- 二叉树的非递归建立(二)
- C#中List〈string〉和string[]数组之间的相互转换
- 这是我的第一篇博客
- 14.2.5.5 Change Buffer