java网络编程小结

来源:互联网 发布:手机淘宝怎样添加客服 编辑:程序博客网 时间:2024/05/17 22:32
1.TCP/IP(Transport Control Protocol)是一种传输控制协议.是Internet中各方所遵循的公共协议.
2.TCP/IP分为四个层次:
网络接口层:负责接收和发送物理帧;
网络层:负责相邻节点之间的通信;
传输层:负责起点到终点的通信;
应用层:提供诸如文件传输、电子邮件等应用程序。
3.TCP/IP协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:
Telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。
FTP(File Transfer protocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。
SMTP(simple Mail Transfer Protocol,简单邮件传输协议):用于传输电子邮件。
NFS(Network file Server,网络文件服务器):使多台计算机透明地访问彼此的目录。
4.HTTP:一种超文本传输协议,它是基于TCP/IP协议的,是WWW浏览器和服务器之间应用层的通信协议。
HTTP是一种通用、无状态、面向对象的协议。
HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。
5.域名服务器(Domain Name Server,DNS)执行文字名称到二进制网络地址的映射  192.168.38.35---->it.warmtel.com
6.实现客户端(Socket)与服务器(ServerSocket)之间的通信
首先实例化服务器ServerSocket = new ServerSocket(port);
监听端口号    serverSocket.accept();
实例化客户端 Socket socket = new Socket(id, port);
id 是Internet中各方所遵循的公共协议,是服务器的地址例如String(192.168.28.34)

port 是服务器监听的端口号,范围是0--65535(1024--65535供应用程序使用)端口号0~1023供系统专用。例如,HTTP协议在端口80,telnet协议在端口23。


客户端

public class ClientServer {
public static int port = 1210;
public static String id = "192.168.38.34";
public static BufferedReader br;
private Socket socket;
public static PrintWriter pw;
public static BufferedReader sin;

public ClientServer(){//构造方法时启动两方法
startSocket();
initStream();
}
public static void main(String args[]) {
ClientServer cs = new ClientServer();
cs.threadToGetMsg();
cs.sendMsg();
}
public void startSocket(){

try {


socket = new Socket(id, port);//实例化客户端


} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void initStream(){
try{
sin = new BufferedReader(new InputStreamReader(//键盘输入
System.in));
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//从socket对象中获得字符流
pw = new PrintWriter(socket.getOutputStream());//向socket对象写入到客户端
}catch(IOException e){
e.printStackTrace();
}
}
public void threadToGetMsg(){
new Thread(new Runnable() {//匿名内部类
public void run() {
while (true) {

try {
String str= br.readLine();//读出socket的类容
if (str != null) {
System.out.println("客户端:" + str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}
}).start();
}
public void sendMsg(){
try {
System.out.println("请输入信息");
String msg = sin.readLine();
while (!msg.equals("over")) {
pw.println(msg);//向socket端写入数据
pw.flush();
System.out.println("请输入信息");
msg = sin.readLine();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}



}

服务端

public class SocketServer {
public static int port = 1210;
public static Socket socket;
public static BufferedReader br;
public static BufferedReader sin;
public static PrintWriter pw;

public SocketServer() {
startServer();
initStream();
}
public static void main(String args[]) {
SocketServer ss = new SocketServer();
ss.threadSetReadMsg();
ss.sendMsg();
ss.close();
}
public void startServer(){
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public void initStream(){

try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
sin = new BufferedReader(new InputStreamReader(System.in));
pw = new PrintWriter(socket.getOutputStream());
} catch (IOException e) {

e.printStackTrace();
}

}
public void threadSetReadMsg(){

new Thread(new Runnable(){
public void run(){
while(true){
String str;

try {
str = br.readLine();
if(str!=null){
System.out.println("客户端:"+str);
}
} catch (IOException e) {

e.printStackTrace();
}

}
}
}).start();
}
public void sendMsg(){
System.out.println("请输入信息");
String msg;
try {
msg = sin.readLine();
while(!msg.equals("over")){
pw.println(msg);
pw.flush();
System.out.println("请输入信息");
msg = sin.readLine();

}
} catch (IOException e) {

e.printStackTrace();
}
}
public void close(){

try {
if(br!=null)
if(sin!=null)
sin.close();
if(pw!=null)
pw.close();
br.close();
} catch (IOException e) {

e.printStackTrace();
}
}
}


0 0
原创粉丝点击