网络编程
今天我们学习了网络编程,并对它有了一定的了解,网络编程是指编写与其他计算机进行通信的程序。
协议
也了解到了TCP、UDP协议的特点:
TCP协议是传输控制协议、特点是面向连接、数据可靠安全、基于字节流的运输层(Transport layer)通信协议
UDP协议是用户数据报协议、特点是面向无连接、数据不可靠、但UDP也 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法
套接字
因为学习了网络通信,所以我也了解到了套接字( socket),就是将应用程序与端口连接起来的程序叫套接字(有字多的详细的:套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。)。
端口
端口可以认为是计算机与外界通讯交流的门,而端口号就是打开门的钥匙。
常见的端口号有
HTTP服务一般用的80端口
FTP服务默认使用的21端口
0~1023之间的端口号多用于一些知名的网络服务和应用
用户的普通网络建议使用1024以上的端口号,以免冲突(注意:端口号只有整数,范围是从0 到65535)。
我在老师的讲解河教导下做了一个简单的端口数据传递,代码如下:
这是客户端(Client)的
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Clien {
public static void main(String[] args) throws Exception, IOException {
//创建一个客户端的Socket对象
Socket s = new Socket(“localhost”,11010);
//通过socket对象调用getOutputStream方法得到一个输出流对象
OutputStream out = s.getOutputStream();
//定义要向服务端发送的内容
String name = "我*你个**";
//将内容转化成字节数组
byte[] b=name.getBytes();
//使用输出流对象调用write方法将内容写入流
out.write(b);
}
}
然后是服务端(Server)的
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Serv {
public static void main(String[] args) throws IOException {
//创建一个服务端套接字对象
ServerSocket s = new ServerSocket(11010);
//通过服务端套接字对象调用accept方法监听客户的请求
Socket ss = s.accept();
//使用socket对象获取输入流对象
InputStream in = ss.getInputStream();
//定义一个字节数组
byte[] b = new byte[1024];
//使用输入流对象读取内容
int len = in.read(b);
//将读取的内容转换成字符串并打印出来
String res = new String(b,0,len);
System.out.println("客户端发来的消息:"+res);
}
}
这个只限于在同一台电脑上,先运行服务端,再运行客户端。要想从这台电脑发到另一台电脑上的话要知道IP地址的,并且在同一局域网下,具体是把客户端的Socket s = new Socket(“localhost”,11010);中的ocalhost改成IP地址(好像是这样的)。