// Server
package com.topking.ftp.util;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer extends Frame
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 2333390035339206037L;
static Button b = new Button(" ");
static Label l1 = new Label("No connection on port 8888");
public TcpServer() throws HeadlessException
{
super("Listening");
setLayout(new FlowLayout(FlowLayout.LEFT));
add(b);
add(l1);
b.setBackground(Color.RED);
setVisible(true);
pack();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
b.addActionListener(new ButtonListener());
}
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
public static void main(String args[])
{
new TcpServer();
int port;
ServerSocket server_socket;
BufferedReader input;
try
{
port = Integer.parseInt(args[0]);
}
catch (Exception e)
{
System.out.println("port = 8888 (default)");
port = 8888;
}
try
{
server_socket = new ServerSocket(port);
System.out.println("Server waiting for client on port "
+ server_socket.getLocalPort());
// server infinite loop
while (true)
{
Socket socket = server_socket.accept();
b.setBackground(Color.GREEN);
l1.setText("Connection" + socket.getInetAddress());
System.out.println("New connection accepted "
+ socket.getInetAddress() + ":" + socket.getPort());
input = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
// print received data
try
{
while (true)
{
String message = input.readLine();
if (message == null)
break;
System.out.println(message);
}
}
catch (IOException e)
{
System.out.println(e);
}
// connection closed by client
try
{
socket.close();
b.setBackground(Color.RED);
l1.setText("No connection on port 8888");
System.out.println("Connection closed by client");
}
catch (IOException e)
{
System.out.println(e);
}
}
}
catch (IOException e)
{
System.out.println(e);
}
}
}
// Client
package com.topking.ftp.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient
{
public static void main(String[] args)
{
int port = 8888;
String server = "localhost";
Socket socket = null;
String lineToBeSent;
BufferedReader input;
PrintWriter output;
int ERROR = 1;
// read arguments
if (args.length == 2)
{
server = args[0];
try
{
port = Integer.parseInt(args[1]);
}
catch (Exception e)
{
System.out.println("server port = 1000 (default)");
port = 1500;
}
}
// connect to server
try
{
socket = new Socket(server, port);
System.out.println("Connected with server "
+ socket.getInetAddress() + ":" + socket.getPort());
}
catch (UnknownHostException e)
{
System.out.println(e);
System.exit(ERROR);
}
catch (IOException e)
{
System.out.println(e);
System.exit(ERROR);
}
try
{
input = new BufferedReader(new InputStreamReader(System.in));
output = new PrintWriter(socket.getOutputStream(), true);
// get user input and transmit it to server
while (true)
{
lineToBeSent = input.readLine();
// stop if input line is "."
if (lineToBeSent.equals("."))
break;
output.println(lineToBeSent);
}
}
catch (IOException e)
{
System.out.println(e);
}
try
{
socket.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
}
分享到:
相关推荐
本资源"Android源码——Socket编程源码(与PC通讯).zip"提供了Android应用程序使用Socket与PC进行通讯的具体实现。下面我们将详细探讨相关的Android Socket编程知识。 首先,Socket是网络编程中的一个概念,它提供...
- Java提供了丰富的API来处理网络通信,如Socket、ServerSocket、HttpURLConnection等。Socket用于客户端与服务器之间的双向通信,ServerSocket则用于监听和接受来自客户端的连接请求。 - Java的I/O流...
标题“Tomcat分配请求之——Socket获取请求”主要涉及的是Tomcat服务器在处理HTTP请求时的核心机制。在Web服务器中,Tomcat是一个广泛使用的开源应用服务器,它负责解析并响应来自客户端(如浏览器)的HTTP请求。这...
本项目名为"JAVA课程设计——网络版五子棋",是基于Java Swing组件开发的一款五子棋游戏,不仅支持单机模式,还具备网络功能,允许玩家通过服务器进行联网对战,实现了多人在线游戏。以下是该项目涉及的主要知识点和...
【Java课程设计——中国象棋网络对战游戏】 在本次Java课程设计中,开发者构建了一个中国象棋的网络对战游戏。这个游戏的核心理念是让两个玩家可以在不同的计算机上通过网络进行实时对战,实现了远程玩家之间的互动...
这份"安卓Android源码——Socket编程源码(与PC通讯).zip"压缩包包含了一个实例,演示了如何使用Java的Socket API在Android设备上建立与PC的连接并进行数据交换。 首先,让我们理解Socket的基本概念。Socket是一种...
实验报告“Java实验报告——实验4.pdf”涵盖了Java程序设计中的关键知识点,主要涉及GUI界面设计、网络通信编程以及多线程技术。以下是这些知识点的详细说明: 1. **Java GUI程序设计**: - Java提供了丰富的图形...
- **网络通信**:使用Java的Socket编程或者更高层次的API如Java RMI(远程方法调用)进行客户端与服务器的数据传输。 - **业务逻辑处理**:实现图书的入库、出库、借阅、续借、罚款计算等功能,这部分可能涉及多...
在Java网络编程中,TCP(Transmission Control Protocol)协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP提供了一种可靠的数据传输服务,确保数据的正确顺序和完整性,非常适合文件传输。本教程将...
本话题主要探讨了两种常用编程语言——Java和C#之间如何利用Socket进行通信。Socket是网络编程的基本接口,允许应用程序通过网络发送和接收数据。以下是关于"Java和C#之间基于Socket的通信"的详细知识点: 1. **...
Java中的Socket编程是网络通信的基础,它允许两个网络应用程序通过TCP/IP协议进行数据交换。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心。本篇将深入探讨这两个类以及它们在创建、连接、发送...
Java提供了丰富的网络编程API,如`java.net`包中的`Socket`、`ServerSocket`、`DatagramSocket`和`MulticastSocket`等类。这些类用于创建客户端和服务端的连接,处理TCP(传输控制协议)和UDP(用户数据报协议)...
1. **Java网络编程**:Java聊天室程序基于TCP/IP协议栈实现,主要用到`java.net.Socket`和`ServerSocket`类。`ServerSocket`用于创建服务器端监听套接字,等待客户端连接;`Socket`则代表客户端与服务器之间的连接。...
- **网络编程**:使用Java的Socket编程实现双人联机功能,让两个玩家能通过网络进行交互。 - **文件操作**:读写配置文件或保存游戏进度。 - **错误处理和调试**:编写异常处理代码,使用调试工具定位和修复程序问题...
【Java项目开发——Chat即时聊天系统】是一个针对计算机科学与技术专业的实践项目,旨在让学生通过实际操作理解Java编程的核心概念和特性,同时掌握Java应用软件的开发流程。在这个项目中,学生们将使用JDK和Eclipse...
2. **Java网络编程**:聊天室的核心是网络通信,Java提供了Socket编程接口来实现客户端与服务器之间的通信。开发者需要理解TCP/IP协议,熟练运用Socket进行数据传输。 3. **多线程编程**:为了实现多个用户同时在线...
本文将重点研究基于Socket的数据传输安全技术,并以Java平台的Socket技术为例,探讨其安全机制。 Socket是一个在应用层与传输层之间的一个抽象层,它提供了一个接口,允许程序在两个端点之间发送数据。这种端点一般...
Socket是Java提供的网络通信基础,通过创建ServerSocket监听客户端连接,并用Socket建立连接,实现数据的双向传输,使得玩家可以在线对战。 2. **图形用户界面(GUI)**:游戏的交互主要通过GUI进行,Java提供了...