Socket 客户端实例

如下的 GreetingClient 是一个客户端程序,该程序通过 socket 连接到服务器并发送一个请求,然后等待一个响应。

GreetingClient.java 文件代码:

 1 // 文件名 GreetingClient.java
2
3 import java.net.*;
4 import java.io.*;
5
6 public class GreetingClient
7 {
8 public static void main(String [] args)
9 {
10 String serverName = args[0];
11 int port = Integer.parseInt(args[1]);
12 try
13 {
14 System.out.println("连接到主机:" + serverName + " ,端口号:" + port);
15 Socket client = new Socket(serverName, port);
16 System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
17 OutputStream outToServer = client.getOutputStream();
18 DataOutputStream out = new DataOutputStream(outToServer);
19
20 out.writeUTF("Hello from " + client.getLocalSocketAddress());
21 InputStream inFromServer = client.getInputStream();
22 DataInputStream in = new DataInputStream(inFromServer);
23 System.out.println("服务器响应: " + in.readUTF());
24 client.close();
25 }catch(IOException e)
26 {
27 e.printStackTrace();
28 }
29 }
30 }

Socket 服务端实例

如下的GreetingServer 程序是一个服务器端应用程序,使用 Socket 来监听一个指定的端口。

GreetingServer.java 文件代码:

 1 // 文件名 GreetingServer.java
2
3 import java.net.*;
4 import java.io.*;
5
6 public class GreetingServer extends Thread
7 {
8 private ServerSocket serverSocket;
9
10 public GreetingServer(int port) throws IOException
11 {
12 serverSocket = new ServerSocket(port);
13 serverSocket.setSoTimeout(10000);
14 }
15
16 public void run()
17 {
18 while(true)
19 {
20 try
21 {
22 System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
23 Socket server = serverSocket.accept();
24 System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
25 DataInputStream in = new DataInputStream(server.getInputStream());
26 System.out.println(in.readUTF());
27 DataOutputStream out = new DataOutputStream(server.getOutputStream());
28 out.writeUTF("谢谢连接我:" + server.getLocalSocketAddress() + "\nGoodbye!");
29 server.close();
30 }catch(SocketTimeoutException s)
31 {
32 System.out.println("Socket timed out!");
33 break;
34 }catch(IOException e)
35 {
36 e.printStackTrace();
37 break;
38 }
39 }
40 }
41 public static void main(String [] args)
42 {
43 int port = Integer.parseInt(args[0]);
44 try
45 {
46 Thread t = new GreetingServer(port);
47 t.run();
48 }catch(IOException e)
49 {
50 e.printStackTrace();
51 }
52 }
53 }

编译以上两个 java 文件代码,并执行以下命令来启动服务,使用端口号为 6066:

$ javac GreetingServer.java
$ java GreetingServer 6066
等待远程连接,端口号为:6066...

新开一个命令窗口,执行以上命令来开启客户端:

1 $ javac GreetingClient.java
2 $ java GreetingClient localhost 6066
3 连接到主机:localhost ,端口号:6066
4 远程主机地址:localhost/127.0.0.1:6066
5 服务器响应: 谢谢连接我:/127.0.0.1:6066
6 Goodbye!

java网络编程socket的使用的更多相关文章

  1. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

  2. java网络编程socket解析

    转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...

  3. Java网络编程——Socket

    网络是连接不同计算机的媒介,不同的计算机依靠网络来互相通信,即传递数据. Java中与网络编程相关的部分主要是Socket(套接字),它作为一种抽象的结构,实现了与通信相关的各类方法,构成一套完整的通 ...

  4. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

  5. java网络编程Socket通信详解

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

  6. java网络编程——socket实现简单的CS会话

    还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...

  7. JAVA网络编程Socket常见问题 【长连接专题】

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  8. java 网络编程Socket

    TCP: 通过TCP协议传输,得到的是一个顺序的无差错的数据流. 发送方和接收方的成对的两个socket之间必须建立连接, 以便在TCP协议的基础上进行通信,当一个socket(通常都是server ...

  9. java 网络编程Socket编程

    Server.java import java.io.*; import java.net.*; public class Server { public static void main(Strin ...

  10. Java网络编程Socket通信

        TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议     UDP (User Datagram Proto ...

随机推荐

  1. 爬虫之Selenium

    简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如 ...

  2. python程序整理(2)

    # 写一个函数完成三次登陆功能: # 用户的用户名密码从一个文件register中取出. # register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行. # 完 ...

  3. 【嵌入式】C语言高级编程▁▁▁嵌入式C语言入门编程学习!

    ✍  1.C 语言标准 什么是 C 语言标准呢? 我们生活的现实世界,就是由各种标准构成的,正是这些标准,我们的社会才会有条不紊的运行. 比如我们过马路,遵循的交通规则就是一个标准:红灯停,绿灯行,黄 ...

  4. 【图论】USACO07NOV Cow Relays G

    题目大意 洛谷链接 给定一张\(T\)条边的无向连通图,求从\(S\)到\(E\)经过\(N\)条边的最短路长度. 输入格式 第一行四个正整数\(N,T,S,E\),意义如题面所示. 接下来\(T\) ...

  5. centos8平台使用parted管理分区

    一,parted的用途 parted是GNU发布的强大的分区工具, parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区. 因为fdisk命令对于大于2T的分区无法划 ...

  6. css选择器 兄弟选择器 相邻兄弟选择器 子元素选择器

    1.兄弟选择器: ~ 该选择器会选择当前元素之后的所有相邻指定元素(具有相同父元素的兄弟元素): .p ~ li{ color: blue; } <div> <p class=&qu ...

  7. SVN如何回滚到指定版本

    以下内容网上收集整理. 方法一. 利用Export,这样你可以不丢失你新建的文件.打开你想要回滚的文件夹(受SVN版本控制).右键Tortoise SVN,然后在列表中选择 show log, 在看到 ...

  8. s == t 何解?

    Integer s=new Integer(9); Integer t=new Integer(9); Long u=new Long(9);     (s==t) 这个是错的,只要有new这个关键字 ...

  9. 一个基于canvas的移动端图片编辑器

    欢迎使用 canvas_mobile_drag 项目地址:https://github.com/xiaosu95/canvas_mobile_drag 点击查看demo(在移动端上查看) 该插件是一款 ...

  10. dd 在度娘上看到的一个大牛的《背包九讲》 (:

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 基本思路 这是最 ...