`
1641606815
  • 浏览: 39691 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java中Socket通信

阅读更多
一.通信中常用到的命令行命令
 
1.查看你的电脑与其他服务器的连接信息-->>netstat -an
    当你在命令行中输入netstat -an 并回车后会出现如图所示的界面:




    其中:
       
第一列  第二列   第三列  第四列
协议是 TCP 还是 UDP  本地地址由IP和端口组成  目标机器地址由IP和端口组成 连结状态

        
  2.检查目标网站是否与本机是否可以连接也就是所谓的是否可以ping的通
    当你在命令行中输入ping taobao.com(仅仅是一个例子只要ping 后面是网址或者是IP地址)
    回车后会看到
   


  3.连接某网站telnet
    如:telnet taobao.com 80  回车
    其中taobao.com为网址也可以为IP地址  80代表端口且为默认的端口
  4.查看本机与目标服务器之间经过多少服务器-->>tracert
    当你在命令行中输入tracert taobao.com并回车后命令行中就会显示
    途中经过多少个服务器并将服务器的IP地址输出
    


二.实现编译器向命令行发送信息
    代码如下:
	/**
	* 简单通信只实现了从代码中向命令行中发送一条信息
	* 
	* @author:Andrew
	*/
	public class ChatServer(){
		//主函数
		public static void main(String[] args){
			ChatServer chat = new ChatServer();
			chat.setUpServer(8000);
		}
		/**
		* 启动服务器
		* @param port:端口
		*/
		private void setUpServer(int port){
		 try{
			//建立指定端口的服务器
			ServerSocket server = new ServerSocket(port);
			Socket client = server.acceept();
			
			OutputStream out = client.getOutputStream();
			String str = "我的第一个通信项目";
			byte[] data = str.getBytes();
			out.write(data);
			out.flush();
			client.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}

   运行上面的代码然后再打开命令行
   输入:telnet localhost 8000
   回车后即可看到命令行输出:我的第一个通信项目
  
   如果打开命令行输入:telnet localhost 8000
   回车后被告知不是内部命令
   请打开"我的电脑"在搜索中搜索telnet然后将 telnet.exe
   拷贝到C:\Windows\System32 目录下即可
三.实现命令行与java编译软件间的通信仅以Eclipse为例
   代码如下:
package threadTalk;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 多个命令行聊天的入口
 * @author Andrew
 *
 */
public class Main {

	/**
	 * 主程序
	 */
	public static void main(String[] args) {
		Main m = new Main();
		m.setUpServer(9090);
	}
	/**
	 * 启动一个服务器
	 * @param port  端口号
	 */
	private void setUpServer(int port){
		try {
			//建立服务器对象
			ServerSocket server = new ServerSocket(port);
			System.out.println("端口:"+port);
			
			while(true){
				Socket socket = server.accept();
				ServerThread st = new ServerThread(socket);
				st.start();
				System.out.println("启动线程!");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

package threadTalk;

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

/**
 * 聊天线程类
 * 功能:在命令行中实现多人聊天
 * @author Andrew
 *
 */
public class ServerThread extends Thread{
	private Socket socket;
	
	public ServerThread(Socket socket){
		this.socket = socket;
	}
	
	public void run(){
		this.sendAndGetInfo();
	}
	/**
	 * 发送并接收信息
	 */
	private void sendAndGetInfo(){
		try {
			//获得输入流对象
			InputStream input = socket.getInputStream();
			String s = "你好!\n";
			this.sendInfo(s);
			
			String inputStr = this.getInfo(input);
			while(!"bye".equals(inputStr)){
				s = "你的话语:"+inputStr+"\n";
				this.sendInfo(s);
				inputStr = this.getInfo(input);
			}
			s = "欢迎再来!";
			this.sendInfo(s);
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 向命令行发送信息的方法
	 * @param str  要发送的信息
	 */
	private void sendInfo(String str){
		try {
			OutputStream out = socket.getOutputStream();
			out.write(str.getBytes());
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 从另一个命令行中读取信息
	 * @param input  基本输入流
	 * @return       读取到的信息
	 * @throws IOException 
	 */
	private String getInfo(InputStream input) throws IOException{
		//创建字符串缓冲区
		StringBuffer buffer = new StringBuffer();
		//读取的字节
		int read_Info = 0;
		while(13 != read_Info){
			read_Info = input.read();
			char char_Info = (char)read_Info;
			buffer.append(char_Info);
		}
		String str_Info = buffer.toString().trim();
		return str_Info;
	}
}

  • 大小: 75 KB
  • 大小: 40.8 KB
  • 大小: 35.1 KB
分享到:
评论

相关推荐

    Java中Socket通信-服务端和客户端双向传输字符串实现示例代码.rar

    Java中Socket通信-服务端和客户端双向传输字符串实现示例代码。在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的...

    Java中Socket通信-客户端与服务端相互传输对象数据示例代码.rar

    在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 socket 的典型应用就是 ...

    java中socket通信

    网络通信技术中socket通信技术是比较常用的一种,由于他比较灵活所以大部分项目都是用socket技术实现服务通信

    Java_socket 通信示例(Java源码)

    在Java Socket通信中,服务端通常会创建一个ServerSocket对象,监听指定端口上的连接请求。一旦有客户端发起连接,ServerSocket就会接受连接并返回一个新的Socket对象,用于与客户端进行数据交换。在客户端,我们会...

    Java Socket 聊天通信演示代码

    首先,Java Socket通信基于TCP(传输控制协议),它确保了数据的可靠传输,包括数据的顺序和无丢失。在聊天应用中,服务器端创建一个Socket监听特定的端口,等待客户端的连接请求。一旦客户端连接到服务器,它们之间...

    Java中Socket通信-客户端向服务端发送照片示例代码.rar

    在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 socket 的典型应用就是 ...

    java实现简单socket通信

    Java实现的简单Socket通信是网络编程中的基础技术,主要用于设备间的双向数据传输。在这个场景中,我们有两个窗口,一个作为服务器端,另一个作为客户端,它们通过TCP协议进行通信。TCP是一种面向连接的、可靠的传输...

    java上socket通信即时通信界面本

    Java Socket通信是网络编程中的重要一环,它提供了在两台计算机之间建立低级连接的能力,使得它们可以相互通信。在这个"java上socket通信即时通信界面本"中,我们很显然关注的是如何使用Java来构建一个具有图形用户...

    java socket通信实现

    Java Socket通信实现是一种基于TCP/IP协议的网络通信方式,它允许两台计算机通过互联网进行双向数据传输。在Java中,Socket类和ServerSocket类是实现客户端-服务器模型通信的核心工具。下面将详细介绍Java Socket...

    Java c++ socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景。Socket是计算机网络中的一个通信协议,它允许不同操作系统上的应用程序之间建立连接并交换数据。在这个场景中,Java作为客户端,C++作为服务端,两者...

    Python与Java间Socket通信实例代码

    同时,我们也了解到Java和Python两个语言平台之间的差异和相似之处,在跨语言平台的通信中,需要注意语言之间的差异和相互调用机制。 在实际应用中,Socket 通信机制广泛应用于各种网络应用程序,例如聊天软件、...

    java与c++通过socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景,尤其在系统集成、设备通讯或者混合编程中。Socket提供了一种基于TCP/IP协议的进程间通信(IPC)方式,可以实现在不同操作系统上的进程之间的数据传输...

    android中java和C的socket通信demo

    本教程将详细解释如何在Android中实现Java和C的Socket通信,特别是在涉及文件描述符传递的场景下。 1. **Java Socket基础** Java中的`java.net.Socket`类提供了网络通信的能力,它允许我们在两个应用程序之间建立...

    C#和java的socket通信

    Java中的Socket通信主要通过`java.net.Socket`和`ServerSocket`类来实现。与C#类似,服务器端需要创建`ServerSocket`,并调用`accept()`方法等待客户端连接。客户端则创建`Socket`对象,指定服务器的IP地址和端口号...

    java基于socket通信

    Java基于Socket通信是一种常见的网络编程方式,主要用于实现客户端与服务器之间的数据交互。在这个场景中,我们看到"基于socket、mysql数据库和java组件、线程实现的qq基本通信"描述,这意味着我们将讨论如何利用...

    基于java的开发源码-Java Socket通信实现.zip

    基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java ...

    Java_socket 通信(源码+Java包)

    在Java Socket通信中,为了实现并发处理,服务器端通常会为每个连接的客户端创建一个新线程。这样,每个线程都可以独立地读取和写入数据,避免了多个客户端请求时的阻塞问题。同时,客户端也可以选择在读写操作时...

    实现nodejs与java的socket相互通信

    本示例聚焦于Node.js与Java之间的Socket通信,这是一个非常实用的技术,因为这两种技术在Web开发和后端服务中都占据着重要的地位。让我们详细探讨一下如何实现Node.js与Java的Socket通信。 首先,Socket是一种基于...

    Flash与JAVA的Socket通信

    Flash与Java的Socket通信是两种不同平台之间进行实时数据传输的一种技术,常用于构建富互联网应用程序(RIA)。本篇将深入探讨Flash与Java通过Socket接口实现通信的原理、步骤及其实现方法。 首先,我们需要了解...

Global site tag (gtag.js) - Google Analytics