网络编程入门

来源:互联网 发布:软件项目经理资格证书 编辑:程序博客网 时间:2024/05/21 11:04

回顾一下网络协议的知识,可以帮助网络编程理解;
网络协议:
http:超文本传输协议;
ftp:文件传输协议;
tcp:传输控制协议;
udp:用户数据报协议;
ip:互联网协议;

协议本质上是一种约定/规则,用于描述不同主机之间通信的方式。

接下来是基于TCP协议的编程模型

C/s(client/server)
B/S(brower/server)
Socket :网络编程中的逻辑载体,包括了ip地址和端口号。
编程模型,通信过程:
服务端:
1.创建server类型的对象,并创建端口号;
2.等待客户端的连接请求,使用accept方法;
3.当有客户端连接成功,创建socket对象,使用输入输出流进行通信;
4.关闭socket对象和serversocket对象;
客户端:
1.创建socket类型的对象,并提供ip地址和端口号。
2.使用输入输出流通信;
3.关闭socket对象。

方法简介
1.serversocket类
java.net.ServerSocket创建服务器套接字对象,等待客户端连接;
ServerSocket(int port)创建待连接,并设置端口号;
accept()监听并接受此套接字的连接;
close()关闭套接字;
2.Socket类
java.net.Socket创建客户端套接字对象,套接字是通信的端点
getinputstream()获得输入流;
getoutputstream()获得输出流;
close()关闭套接字

测试案例:
服务端
package studentmanager;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Serversocket {

public static void main(String[] args) {    // TODO Auto-generated method stub    //创建serversocket,端口    try {        ServerSocket serversocket=new ServerSocket(8880);    //等待连接        Socket socket1=serversocket.accept();//阻塞状态,有连接向下执行    //          DataInputStream inputStream=new DataInputStream(socket1.getInputStream());        System.out.println(inputStream.readInt());        socket1.close();        serversocket.close();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}

}

客户端
package studentmanager;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Socketc {
public static void main(String[] args) {
String address = null;
int port = 0;
//创建客户端对象
try {
// Socket sock=new Socket(“ip地址”, 8888);
Socket sock=new Socket(“172.20.10.7”, 8880);
DataOutputStream outputStream=new
DataOutputStream(sock.getOutputStream());
outputStream.writeInt(88);
outputStream.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

1 0