java网络编程socket的使用
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的使用的更多相关文章
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- Java网络编程——Socket
网络是连接不同计算机的媒介,不同的计算机依靠网络来互相通信,即传递数据. Java中与网络编程相关的部分主要是Socket(套接字),它作为一种抽象的结构,实现了与通信相关的各类方法,构成一套完整的通 ...
- day05 Java网络编程socket 与多线程
java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...
- java网络编程Socket通信详解
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- java网络编程——socket实现简单的CS会话
还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
- java 网络编程Socket
TCP: 通过TCP协议传输,得到的是一个顺序的无差错的数据流. 发送方和接收方的成对的两个socket之间必须建立连接, 以便在TCP协议的基础上进行通信,当一个socket(通常都是server ...
- java 网络编程Socket编程
Server.java import java.io.*; import java.net.*; public class Server { public static void main(Strin ...
- Java网络编程Socket通信
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 UDP (User Datagram Proto ...
随机推荐
- MeteoInfoLab脚本示例:计算涡度、散度
用U/V分量数据计算涡度和散度,计算涡度的函数是hcurl,计算散度的函数是hdivg,参数都是U, V.脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u ...
- bootStrap小结2
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- 【Luogu】P4381 [IOI2008]Island
一.题目 Description 你将要游览一个有N个岛屿的公园.从每一个岛i出发,只建造一座桥.桥的长度以Li表示.公园内总共有N座桥.尽管每座桥由一个岛连到另一个岛,但每座桥均可以双向行走.同时, ...
- spring boot:使用mybatis访问多个mysql数据源/查看Hikari连接池的统计信息(spring boot 2.3.1)
一,为什么要访问多个mysql数据源? 实际的生产环境中,我们的数据并不会总放在一个数据库, 例如:业务数据库:存放了用户/商品/订单 统计数据库:按年.月.日的针对用户.商品.订单的统计表 因为统计 ...
- dhtmlxSpreadSheet开源电子表格小部件创建教程
dhtmlxSpreadSheet是用纯JavaScript编写的开源电子表格小部件,可让您快速在网页上添加类似于Excel的可编辑数据表.高度可定制的JavaScript电子表格组件,具有优雅的Ma ...
- codeforces#426(div1) B - The Bakery (线段树 + dp)
B. The Bakery Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought req ...
- 12 个设计 API 的安全建议,不要等出事儿了“捶胸顿足”
原文地址:API Security Best Practices 原文作者:Mark Michon 译者 & 校正:HelloGitHub-小鱼干 & HelloGitHub-鸭鸭 虽 ...
- Camera2使用surface支持
surfaceview是运行在子线程,可以为相机提供不断的刷新 public class MainActivity extends AppCompatActivity { public void on ...
- short i =1; i=i+1与short i=1; i+=1的区别
很典型的一到JAVA 基础面试题,上次面试遇到的,现在记录一下. short i =1; i=i+1;short i=1;i+=1;这两有什么区别呢 ?对两个容量不一样的数据类型的变量进行算术运算时, ...
- requests库响应消息体的四种格式
1.r.text 文本响应内容,返回字符串类型,获取网页html时用: 2.r.content 字节响应内容,返回字节类型,下载图片或者文件时用: 3.r.json json解码响应内容,返回字典 ...