-
网络编程指的是编写与其他计算机进行通信的程序;
-
TCP/UDP协议的特点:
TCP:传输控制协议 UDP:用户数据报协议
TCP特点:面向连接,数据安全可靠;
UDP特点:面向无连接,数据不可靠; -
套接字与端口
连接对内外送达指定数据的装置叫端口,将应用程序连接起来的叫套接字。
常见的端口号:
HTTP服务一般使用80端口;
FTP服务默认使用21端口;
0-1023之间多用于一些知名网络服务和应用,用户普通网络建议使用1024以上的端口号,以避免冲突;
21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。
23端口:23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。
25端口:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。
53端口:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。
67、68端口:67、68端口分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和Bootstrap Protocol Client(引导程序协议客户端)开放的端口。
69端口是为TFTP(Trival File Tranfer Protocol,次要文件传输协议)服务开放的,TFTP是Cisco公司开发的一个简单文件传输协议,类似于FTP。不过与FTP相比,TFTP不具有复杂的交互存取接口和认证控制,该服务适用于不需要复杂交换环境的客户端和服务器之间进行数据传输。
79端口:79端口是为Finger服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息。
80端口:80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。
99端口:99端口是用于一个名为“Metagram Relay”(亚对策延时)的服务,该服务比较少见,一般是用不到的。
109、110端口:109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的。
111端口:111端口是SUN公司的RPC(Remote Procedure Call,远程过程调用)服务所开放的端口,主要用于分布式系统中不同计算机的内部进程通信,RPC在多种网络服务中都是很重要的组件。
113端口:113端口主要用于Windows的“Authentication Service”(验证服务)。
119端口:119端口是为“Network News Transfer Protocol”(网络新闻组传输协议,简称NNTP)开放的。
135端口:135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。
137端口:137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务)。
139端口:139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。
143端口:143端口主要是用于“Internet Message Access Protocol”v2(Internet消息访问协议,简称IMAP)。
161端口:161端口是用于“Simple Network Management Protocol”(简单网络管理协议,简称SNMP)。
443端口:443端口即网页浏览端口,主要是用于HTTPS服务,是提供加密和通过安全端口传输的另一种HTTP。
554端口:554端口默认情况下用于“Real Time Streaming Protocol”(实时流协议,简称RTSP)。
1024端口:1024端口一般不固定分配给某个服务,在英文中的解释是“Reserved”(保留)。
- 网络编程类在java.net包
服务端
package classf;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SereverDome {
public static void main(String[] args) throws IOException {
//创建一个服务端套接字对象
ServerSocket ss =new ServerSocket(10086);
//通过服务端套接字对象调用accept方法来监听客户端的请求
Socket s =ss.accept();
//使用socket对象获取输入流对象
InputStream in = s.getInputStream();
//定义一个字节数组
byte[] b = new byte[1024];
//使用输入流对象读取内容
int len =in.read(b);
//将读取的内容
String res = new String(b,0,len);
System.out.println(res);
}
}
服务端用来监听客户端输出的语句
客户端
package classf;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Dome {
public static void main(String[] args) throws Exception, IOException {
//创建一个客户端socket对象 Socket("IP地址",10086)
Socket s = new Socket("192.168.43.191",10086);
//通过socket对象调用个getOutputStream方法得到一个输出流对象
OutputStream out = s.getOutputStream();
//定义要向服务端发送的内容
String name ="憨批你好,我是客户端";
//将内容转化为字节数组
byte[] bytename=name.getBytes();
//使用输出流对象调用writer方法将方法写入刘
out.write(bytename);
}
}
客户端用来输入要输出的语句,客户端和服务端的IP地址必须保持一致 自己的IP可以写成localhost
先运行服务端再运行客户端