`
弄月吟风
  • 浏览: 199496 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java Socket编程

阅读更多

Java的Socket由Tcp和Udp两种,现在一般都是用Tcp协议的,因为他是一个全双工的可靠的连接;

Java Scoket客户端程序如下:

import java.io.*;

import java.net.*;

public class MyClient {

	public static void main(String[] args) {

		// 这里先强迫用户输入用户名,调用client(str)方法。

		String str = "";

		try {

			while (str.length() < 1) {

				System.out.println("请输入您的名字");

				str = new DataInputStream(new BufferedInputStream(System.in))
						.readLine();

			}

		} catch (Exception e) {

			e.printStackTrace();

		}

		MyClient.client(str);

	}

	public static void client(String userName) {

		try {

			Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 9527);// 套接字的IP地址和端口号

			OutputStream os = s.getOutputStream();// 得到输出流

			InputStream is = s.getInputStream();

			byte[] Name = userName.getBytes("ISO-8859-1"); // 这个是为了中文乱码问题

			os.write(Name);// 向服务器发送消息

			byte[] serverSay = new byte[100];

			int len = is.read(serverSay);// 接受服务器消息

			System.out.println(new String(serverSay, 0, len));// 客户端控制台显示服务器返回的信息

			is.close();

			os.close();

			s.close();// 记住一定要关闭这些输入,输出流和套接字

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

}

 服务端程序:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

//这个简单的socket服务器端主要是说句Hello XXX,采用多线程实现
public class MyServer {
	private Socket s;
	private boolean keepRun = true;
	private OutputStream os;
	private InputStream is;

	public static void main(String[] args) {
		MyServer.server();// main入口,一运行机器,就开通server服务。
	}

	public MyServer(Socket s) {
		this.s = s;
		keepRun = true;
		try {
			s.setSoTimeout(3000);// 设置接收超时
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void run() {
		try {
			os = s.getOutputStream();
			is = s.getInputStream();
			while (keepRun) {
				Thread.sleep(1000);
				byte[] buf = new byte[1024];
				System.out.println("客户端接入");
				is.read(buf);// 从客户端读取消息
				String userName = new String(buf);
				if (userName.length() > 0)
					os.write(userName.getBytes());// 返回给客户端的欢迎信息
			}
			System.out.println("Socket连接关闭");
			keepRun = false;
			os.close();
			is.close();
			s.close();
		} catch (Exception e) {
			System.out.println("Socket关闭");
			keepRun = false;
			try {
				os.close();
				is.close();
				s.close();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			// e.printStackTrace();
		}
	}

	public static void server() {
		try {
			final ServerSocket ss = new ServerSocket(9527); // 服务器的套接字,端口为9527
			new Thread() {
				@Override
				public void run() {
					// TODO Auto-generated method stub
					super.run();
					while (true) {

						Socket s = null;
						try {
							System.out.println("zhixing1");
							s = ss.accept();
							System.out.println("zhixing2");
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						System.out.println("Socket接入");
						new MyServer(s).run(); // 用户一进来就运行一个线程
					}
				}
			}.start();
			System.out.println("zhixing");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 
分享到:
评论

相关推荐

    java socket编程

    Java Socket编程是Java平台中用于实现网络通信的核心API,它基于TCP/IP协议栈,提供了低级别的、面向连接的、可靠的字节流通信。在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和...

    Java socket编程实现两台主机间的通信

    Java Socket 编程实现两台主机间的通信 Java Socket 编程是 Java 语言中用于实现网络通信的编程技术。通过使用 Socket 编程,可以实现两台主机之间的通信,实现数据的传输和交换。本文将详细介绍 Java Socket 编程...

    java socket 编程

    java socket编程 java网络编程 课件 java socket编程 java网络编程 课件

    JAVA Socket编程实现文件上传

    Java Socket编程是网络编程的基础,它提供了在两个应用程序之间建立通信连接的能力。在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库...

    java socket 编程,Java socket 编程实例

    ### Java Socket编程详解及实例分析 #### 一、Socket编程基础概述 在计算机网络通信领域,Socket编程是一种广泛使用的通信方式。它为不同主机上的进程提供了双向通信的能力,是网络编程的基础之一。Java语言提供了...

    Java Socket 编程html教程

    Java Socket编程是Java网络编程的重要组成部分,主要用于实现客户端与服务器之间的通信。在本文中,我们将深入探讨Java Socket编程的基础知识,以及如何结合HTML进行交互。 首先,Java Socket是TCP/IP协议族的一...

    Java Socket 编程源代码示例

    import java.io.*; import java.net.*; import java.util.*; import java.lang.*; public class Server extends ServerSocket { private static ArrayList User_List = new ArrayList(); private static ...

    java socket 编程文档

    本文将深入探讨Java Socket编程的基础知识、关键概念以及如何在实践中应用。 一、Socket概述 Socket,也被称为套接字,是网络通信的端点,可以理解为两个应用程序之间的连接通道。在Java中,Socket类(java.net....

    华科-计算机网络实验报告-Java Socket编程-网络组建实验.docx

    Java Socket 编程在计算机网络实验中的应用 Java Socket 编程是计算机网络实验中的一个重要组成部分,它允许开发者创建可以在网络上传输数据的应用程序。下面是关于 Java Socket 编程在计算机网络实验中的应用的...

    总结java_socket编程.doc

    在Java中,Socket编程主要是基于TCP/IP协议的网络编程。 网络编程的两个主要问题 在网络编程中,有两个主要的问题需要解决:一是如何准确地定位网络上的一台或多台主机,二是找到主机后如何可靠高效地进行数据传输...

    Java Socket编程:文件传输.doc

    Java Socket 编程:文件传输 Java Socket 编程是 Java 语言中的一种网络编程技术,用于实现客户端和服务器端之间的数据传输。文件传输是 Java Socket 编程中的一种常见应用场景,通过建立客户端和服务器端之间的...

    Java socket编程实例.pdf

    本文将通过一个具体的Java Socket编程实例来深入探讨如何使用Java实现客户端与服务端之间的通信。 #### 二、基础知识概述 在开始具体实例之前,我们需要了解一些基本概念: - **Socket**:Socket是一种用于在网络...

    java Socket 编程源码

    Java Socket编程是网络编程的基础,它提供了在Java中进行低级网络通信的接口。Socket是TCP/IP协议族的一部分,用于实现客户端与服务器之间的双向通信。在这个"java TCP_IP Socket 编程"源码中,我们可以深入理解...

    java socket编程实例(出自《java大学教程》)

    学习这些Java Socket编程实例,有助于理解TCP/IP通信的基本原理,为构建实际的网络应用程序打下坚实的基础。你可以通过调试和修改`SocketTest`代码,进一步探索和实践Socket编程的不同场景,如文件传输、聊天应用等...

    浅出Java Socket编程

    Java Socket编程是网络编程的基础,它是Java平台中用于实现客户端-服务器通信的关键组件。本教程将深入浅出地探讨Java Socket编程的核心概念和技术,帮助开发者理解如何构建可靠的网络应用程序。 一、Socket概述 ...

    Java Socket编程笔记_动力节点Java学院整理

    异常处理在Java Socket编程中扮演着重要角色。主要涉及四种异常类型: 1. `UnknownHostException`: 表示主机名或IP地址无法解析,通常是因为网络不可达或者主机名不存在。 2. `ConnectException`: 当尝试连接到...

    Java Socket编程.pdf

    Java Socket编程是网络编程的一个重要部分,它允许在网络中的计算机之间进行数据交换。Socket编程是基于TCP/IP协议的,因此了解计算机网络、分组报文和协议对于掌握Socket编程来说至关重要。接下来,我将详细解释...

    Java Socket网络编程.pdf

    在Java中,Socket编程主要涉及两个关键类:`ServerSocket`和`Socket`。`ServerSocket`类用于服务器端,它监听指定端口的连接请求。创建一个`ServerSocket`实例,例如`ServerSocket server = new ServerSocket(9998);...

    三步学会Java_Socket编程

    在Java中,Socket编程是实现网络通信的基础,它提供了进程间通信的能力,使得两个相隔万里的计算机可以通过互联网进行数据交换。本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** ...

    JAVA Socket 经典教程

    本教程将深入探讨Java Socket编程的核心概念,以及如何利用它进行网络通信。 1. **Java Socket基础** - **Socket的概念**:Socket是网络通信中的一个端点,可以理解为两台机器间通信的桥梁。在Java中,Socket类...

Global site tag (gtag.js) - Google Analytics