package socket;
import java.awt.BorderLayout;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@SuppressWarnings("serial")
public class Server extends JFrame {
private JTextArea jta = new JTextArea();
public static void main(String [] args) {
new Server();
}
public Server() {
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(jta), BorderLayout.CENTER);
setTitle("Server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
ServerSocket serverSocket = new ServerSocket(8000);
jta.append("Server started at " + new Date() + "\n");
Socket socket = serverSocket.accept();
DataInputStream inputFromClient = new DataInputStream(socket.getInputStream());
DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream());
while(true) {
double radius = inputFromClient.readDouble();
double area = radius * radius * Math.PI;
outputToClient.writeDouble(area);
jta.append("Radius received from client: " + radius + "\n");
jta.append("Area found: " + area + '\n');
}
} catch (IOException ex) {
System.err.println(ex);
}
}
}
---------------------------------------------
package socket;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client extends JFrame implements ActionListener {
private JTextField jtf = new JTextField();
private JTextArea jta = new JTextArea();
private DataOutputStream toServer;
private DataInputStream fromServer;
public static void main(String [] args) {
new Client();
}
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if (e.getSource() instanceof JTextField) {
try {
double radius = Double.parseDouble(jtf.getText().trim());
toServer.writeDouble(radius);
toServer.flush();
double area = fromServer.readDouble();
jta.append("radius is " + radius + "\n");
jta.append("area received from the server is " + area + "\n");
} catch (IOException ex) {
System.err.println(ex);
}
}
}
public Client () {
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Enter radius "), BorderLayout.WEST);
p.add(jtf, BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.RIGHT);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p, BorderLayout.NORTH);
this.getContentPane().add(new JScrollPane(jta), BorderLayout.CENTER);
jtf.addActionListener(this);
setTitle("Server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
Socket socket = new Socket("localhost", 8000);
fromServer = new DataInputStream(socket.getInputStream());
toServer = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {
jta.append(ex.toString() + "\n");
}
}
}
分享到:
相关推荐
在这个"实战Linux Socket编程源码"中,我们可以深入理解并实践Socket的工作原理和应用。源代码的第11章着重于处理多个客户端的连接,这是构建服务器端应用时常见的需求,例如聊天室或在线游戏服务器。 首先,让我们...
这份"Android Socket编程源码(与PC通讯)"的压缩包提供了一个实用的示例,帮助学生理解如何在Android设备上通过Socket进行数据传输并与PC进行通讯。以下是关于这个主题的详细知识点: 1. **Socket基本概念**: - ...
本资源"Android源码——Socket编程源码(与PC通讯).zip"提供了Android应用程序使用Socket与PC进行通讯的具体实现。下面我们将详细探讨相关的Android Socket编程知识。 首先,Socket是网络编程中的一个概念,它提供...
这个压缩包"Android Socket编程源码(与PC通讯).zip"包含了用于演示如何让Android设备与个人计算机(PC)通过网络进行数据交换的源代码。让我们深入探讨一下Android Socket编程以及它如何与PC进行通讯。 首先,...
本资源“windows socket编程源码”提供了一个初学者学习Winsock编程的范例,对于想要深入理解网络编程的人来说,这是一个很好的起点。 首先,让我们了解一下Winsock的基本概念: 1. **Winsock初始化**:在使用...
本压缩包“Android代码-Socket编程源码与PC通讯.zip”提供了一套完整的示例,帮助开发者理解和实践Android应用中的Socket通信。 首先,我们需要了解Socket的基本概念。Socket,也被称为套接字,是网络通信中的一个...
在这个“Android Socket编程源码(与PC通讯)”的项目中,我们可以预期包含以下关键知识点: 1. **Socket基础**:Socket分为ServerSocket和Socket两种类型。ServerSocket是服务端使用的,用于监听客户端的连接请求...
这份"安卓Android源码——Socket编程源码(与PC通讯).zip"压缩包包含了一个实例,演示了如何使用Java的Socket API在Android设备上建立与PC的连接并进行数据交换。 首先,让我们理解Socket的基本概念。Socket是一种...
这个"Android Socket编程源码与PC通讯.zip"文件包含的资源可能是一个示例项目,演示了如何在Android应用中使用Socket与个人计算机(PC)进行双向通信。以下是对这个主题的详细讲解: 1. **Socket基础概念**: - ...
通过深入学习和理解这个C# Socket编程源码,你可以掌握网络编程的基本原理和实践技巧,这对于开发任何需要网络通信的应用程序都是非常重要的。无论是构建聊天应用、文件传输系统还是分布式系统,Socket编程都是必不...
Java Socket编程是网络编程的基础,它提供了在Java中进行低级网络通信的接口。Socket是TCP/IP协议族的一部分,用于实现客户端与服务器之间的双向通信。在这个"java TCP_IP Socket 编程"源码中,我们可以深入理解...
android socket编程源码—同一台PC的两个模拟器间的通信附详细文档 android socket编程源码—同一台PC的两个模拟器间的通信附详细文档 android socket编程源码—同一台PC的两个模拟器间的通信附详细文档
分析这两个文件的源码可以帮助我们更好地理解和应用Android Socket编程。 总的来说,Android Socket编程涉及到网络通信的基础知识,包括TCP/IP协议、Socket接口以及输入输出流的使用。通过学习和实践,开发者可以...
Android Socket编程源码(与PC通讯).zip项目安卓应用源码下载Android Socket编程源码(与PC通讯).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
在这个"Socket编程源码(与PC通讯).zip"压缩包中,包含了一个Android客户端(Socket_Client)和一个PC服务器端(Socket_Server)的示例,用于演示如何实现手机和电脑之间的TCP通信。 TCP(Transmission Control ...
Android源码——Socket编程源码(与PC通讯).7z
在IT领域,Socket编程是构建网络应用程序的基础,它允许程序通过网络进行通信。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,广泛应用于互联网中的数据交换。本示例是一个C++实现的TCP...