每次一提到网络就感觉瞬间变得高大上了,可是网络编程真的有那么神秘吗?接下来让我们一起来复习一下吧。
很多人把网站编程等价于网络编程,在这里给大家纠正一下,网络编程!=网站编程,那么何为网络编程呢?网络编程时基于TCP和UDP的一种编程,例如:游戏类、社交类产品。对于TCP通讯,它是一种有问有答的一种编程,而UDP是一种类似于对讲机的一种通讯,两者各有优点,TCP相对UDP更安全,UDP相对TCP传输更快速,在游戏开发中经常使用UDP通讯。
对于他们之间的深层区别,我就不是十分清楚了,如果你知道,请劳烦交流一下。
下面我们以实际例子,简单介绍一下网络编程:
一、基于TCP的简单网络连接:
服务器端代码:
public class TestSeriver { /**服务器端 * @param args */ public static void main(String[] args) { try { //我们的机器上一个有65526个端口,在我们设置端口时,尽量选择124以后的端口,因为124之前的端口已经被特定的程序设置,例如:80 :浏览器地址端口 ServerSocket ss = new ServerSocket(888);//这里的888:是我们为了方便客户端的连接设置的端口号 Socket s = ss.accept();//用来接收客户端的的连接,注意这个方法是阻塞式的,也就是说如果没有客户端连接,程序将会停留在这个位置 System.out.println("A client connect!"); } catch (IOException e) { e.printStackTrace(); } } }
客户端代码:
public class TestClient { /**客户端 * @param args */ public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1",888);//在这里说明一点,"127.0.0.1":使我们的主机号,888:是我们需要连接的端口号 } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
在这里说明一点,这种服务器--客户端连接,一次只能连接一个客户端,并且没有任何数据通信,那如何实现多客户端连接,并完成通信呢?接下来就给大家介绍一种方式:
服务器端代码:
public class TestSeriver1 { /**服务器端 * @param args */ public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(999); while(true){ Socket s = ss.accept(); System.out.println("A client connect!"); InputStream is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); System.out.println(dis.readUTF());//这里的readUTF()方法也是阻塞式的,为了让看到这个效果我在客户端输入的地方添加了一个停顿,已经标注 } } catch (IOException e) { e.printStackTrace(); } } }
客户端代码:
public class TestClient1 { /**客户端 * @param args */ public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1", 999); OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); Thread.sleep(3000);//设置停顿三秒钟,关于这个我在线程的博客里有说明 dos.writeUTF("Hello Server!"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
这其中添加了一下关于JAVA--io流方面的知识,如果你感觉看不懂,我在昨天的博客中对JAVA--io流做了详细的介绍,你可以先去复习一下,在来学习网络。
声明:以上内容如有不当,请留言,谢谢。