码迷,mamicode.com
首页 > 其他好文 > 详细

毕向东tcp学习笔记1

时间:2015-11-01 22:26:01      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

项目功能:

实现一次发送和接收,服务器接收客户端发送的内容并打印出来

 

技术分享

用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后

1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")

2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性

3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应

4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭

代码:

 1 /*
 2 * 客户端:
 3 *  通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机
 4 *  服务端存在并连接成功,形成通路后,再该通道进行数据传输
 5 
 6 步骤:
 7 1.创建socket服务,指定目的主机和端口
 8 */
 9 import java.io.*;
10 import java.net.*;
11 
12 class tcpClient
13 {
14     public static void main(String[] args) throws IOException{
15      //1.创建socket服务,指定目的主机和端口
16      Socket s =new Socket("192.168.1.103",10000);
17 
18      //为了发送数据,应获取socket流的输出流
19      OutputStream out = s.getOutputStream();
20 
21      //将内容放到流中
22      out.write("tcp 我是客户端".getBytes());
23 
24      s.close();
25     }
26 }
27 
28 /*
29 需求:定义端点接收数据并打印在控制台
30 
31 服务端:
32 1.创建服务端serversocket对象并指定端口
33   当不指定时,使用connect方法指定
34 2. 获取连接过来的客户端对象
35    通过serversocket的accept方法等待,阻塞式,无连接一直等待
36 3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据
37   打印在服务台
38 4,关闭服务端(可选)
39 */
40 
41  class tcpServer
42 {
43     public static void main(String[] args) throws IOException{
44     
45      //建立服务端socket服务,并监听端口
46      ServerSocket ss =new ServerSocket(10000);
47 
48      //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性)
49      Socket s = ss.accept();
50      //IP:
51      String ip =s.getInetAddress().getHostAddress();
52      System.out.println(ip+"...连接成功" );
53      //内容:获取客户端发送过来的数据,那么要使用客户端对象s
54      InputStream in = s.getInputStream();
55 
56      byte[] buf =new byte[1024];
57      int len=in.read(buf);
58      String content = new String(buf,0,len);
59      System.out.println("内容:"+content );
60 
61      s.close();//关闭客户端,服务器可以控制客户
62      ss.close();//关闭服务端,可选操作
63     }
64 }

 

毕向东tcp学习笔记1

标签:

原文地址:http://www.cnblogs.com/shuqingstudy/p/4928668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!