网络编程的原理(端口与服务器互相对话)

来源:互联网 发布:网络推广是做什么的 编辑:程序博客网 时间: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();
}
}

阅读全文
1 0