首页 > 编程语言 > 详细

Java学习笔记----Socket

时间:2015-12-10 19:49:44      阅读:187      评论:0      收藏:0      [点我收藏+]

看了这一篇文章,觉得写的还蛮详细的。在这里做个自己的总结和摘录。

http://blog.csdn.net/zzp_403184692/article/details/8065016

两类传输协议:

TCP:

    可靠传输协议 socket<====>socket

UDP

    不可靠传输协议  (数据报包含完整的地址信息,不一定能安全传输得到)

基于Socket的网络编程

1)创建socket

2)打开连接到socket的输入/输出流

3)按照一定的协议对socket进行读写操作

4)关闭socket

---------------------------------------------------------------------------------------------------------------------------------------

创建socket:

构造方法:

Socket(InetAddress address, int port);  
Socket(InetAddress address, int port, boolean stream);  
Socket(String host, int prot);  
Socket(String host, int prot, boolean stream);  
Socket(SocketImpl impl)  
Socket(String host, int port, InetAddress localAddr, int localPort)  
Socket(InetAddress address, int port, InetAddress localAddr, intlocalPort)  
ServerSocket(int port);  
ServerSocket(int port, int backlog);  
ServerSocket(int port, int backlog, InetAddress bindAddr)

Client:

package com.ehealth.net;

import java.io.*;
import java.net.Socket;

public class client {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("127.0.0.1",4700);
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));//我们在键盘输入的东西,读取到内存
			PrintWriter os=new PrintWriter(socket.getOutputStream());//从内存插入一个输出的管子
			BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//从内存插入一个输入的管子
			String readLine;
			readLine=sin.readLine();
			while(!readLine.equals("bye")){
				os.println(readLine);
				os.flush();
				System.out.println("Client:"+readLine);
				System.out.println("Server:"+is.readLine());
				readLine=sin.readLine();
				
			}
			os.close();
			is.close();
			socket.close();
		} catch (IOException e) {
			System.out.println("Error"+e);
		}
	}

}

Server:

package com.ehealth.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;

public class Server {

	public static void main(String[] args) {
		ServerSocket server=null;//创建一个服务器的socket
		try {
			server=new ServerSocket(4700);//接受4700接口
		} catch (IOException e) {
			e.printStackTrace();
		}
		Socket socket=null;//socket插座
		try {
			socket=server.accept();//插座插上
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		String line;
		try {
			BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));//插入管子,读取
			PrintWriter os=new PrintWriter(socket.getOutputStream());//插入管子,写入
			BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));//插入管子 读取键盘输入信息
			System.out.println("Client:"+is.readLine());//这里的is是用socket去get的,所以是先读取客户端的信息
			line=sin.readLine();//这里的sin是通过获取键盘输入的
			while(!line.equals("bye")){
				os.println(line);
				os.flush();
				System.out.println("server:"+line);
				System.out.println("Client:"+is.readLine());
				line=sin.readLine();
			}
			os.close();
			is.close();
			socket.close();
			server.close();
		} catch (IOException e) {
			System.out.println("Error:"+e);
		}
		
	}

}


本文出自 “ehealth” 博客,谢绝转载!

Java学习笔记----Socket

原文:http://ehealth.blog.51cto.com/10942284/1721639

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!