java 通讯学习_Java学习笔记----Socket

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

两类传输协议:

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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值