Socket

SOCKET

TCP端口号,用来识别服务器上特定的应用程序 :0~1023 是通用端口 HTTP:80 FTP:20 smtp:25 telnet:23 pop3:110 time :37 1024~65536 可使用


1.使用BufferedReader从Socket上读取数据

//建立对服务器的Socket连接
Socket socket = new Socket("127.0.0.1","5000");//建立对服务器的Socket连接//127.0.0.1 表示本机地址 应写服务器的地址

//建立连接到Socket上底层输入串流的InputStreamReader 字节--->字符数据
InputStreamReader stream = new InputStreamReader(socket.getInputStream());
底层与高层串流件的桥梁 从Socket取得输入串流

//建立BufferedReader来读取 字符数据--->缓存数据
BufferedReader reader = new BufferedReader(stream);//BufferedReader链接到InputStreamReader
String message = reader.readLine();

reader.close();//关闭所有的串流

2.使用PrintWriter写数据到Socket上

//建立对服务器的Socket连接
Socket socket = new Socket("127.0.0.1","5000");//建立对服务器的Socket连接//127.0.0.1 表示本机地址 应写服务器的地址

//建立连接到Socket的 PrintWriter
PrintWriter writer = new PrintWriter(socket.getOutputStream());//PrinterWriter 是字符数据和字节间的转换桥梁,可以链接String和Socket两端

//写入数据
writer.println("message to send");
writer.print("another message");


编写服务器应用程序需要:一对Socket
1:等待用户请求的ServerSocket
2:与用户通信用得Socket

(1)服务器应用程序对特定端口创建出ServerSocket:
ServerSocket serverSocket = new ServerSocket(4242);//这会让服务器开始监听来自4242端口的客户请求
(2)客户端对服务器应用城区建立Socket链接
Socket s = new Socket("172.0.0.1","4242");
(3)服务器创建出与客户端通信的新Socket
Socket s = serverSocket.accept();// acccpt()方法会在等待用户的 Socket连接,当用户发来Socket连接请求,
//该方法会返回新的Socket(与ServerSocket端口不相同),因此 ServerSocket可空出来等待其他的用户。

 


启动新的线程

(1)建立Runable对象(线程的任务)
Runnable threadJob = new MyRunnable();

public class MyRunnable implements Runnable{
public void run(){ go();};
}

(2)建立Thread对象(执行工人),并赋值Runnable(任务)
Thread myThread = new Thread(threadJob);//新建状态

(3)启动Thread
myThread.start();//可执行状态----->执行中(只能靠JAVA虚拟机的线程调度机制来实现)


线程的并发性问题:使用synchronized关键词来修饰方法使它每次只能被单一的线程存取
synchronized是作用在java对象上的。

转载于:https://www.cnblogs.com/Rage-Leila/p/8735651.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值