以下介绍:简单的socket发送消息,服务的Server 相互 客户端Client,进行简单的传递消息:


服务端代码:

package test;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
/**
* 服务器连接的Socket
*/
public static ServerSocket cServerSocket; /**
* 连接
*/
public static Socket cSocket; /**
* 端口
*/
public static final int PORT = 8888; public static void main(String[] args) { DataInputStream dis = null;
DataOutputStream dos = null; try {
cServerSocket = new ServerSocket(PORT);
while (true) {
System.out.println("正在等待客户连接...");
// 这里处于等待状态,如果没有客户端连接,程序不会向下执行
cSocket = cServerSocket.accept();
dis = new DataInputStream(cSocket.getInputStream());
dos = new DataOutputStream(cSocket.getOutputStream());
// 读取数据
String clientStr = dis.readUTF(); String msg = "已收到信息:"+clientStr; // 写出数据
dos.writeUTF(msg); System.out.println(msg); System.out.println("---客户端信息打印,IP:"
+ cSocket.getInetAddress()
+ " Prot:" + cSocket.getPort());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dis != null) {
dis.close();
}
if (dos != null) {
dos.close();
}
} catch (IOException e) {
e.printStackTrace();
} }
}
}

客户端代码:

private Socket cSocket;
// 服务器server/IP地址(当前PC的IP地址)
private final String ADDRESS = "192.168.8.2";
// 服务器端口
private final int PORT = 8888;
cThread = new Thread() {
@Override
public void run() {
super.run();
DataInputStream dis = null;
DataOutputStream dos = null;
try {
// 阻塞函数,正常连接后才会向下继续执行
cSocket = new Socket(ADDRESS, PORT);
dis = new DataInputStream(cSocket.getInputStream());
dos = new DataOutputStream(cSocket.getOutputStream()); // 向服务器写数据
dos.writeUTF("hello socket..."); // 读取服务器发来的数据
cContent += dis.readUTF(); } catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dis != null) {
dis.close();
}
if (dos != null) {
dos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
};
cThread.start();

运行效果:


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利CSDN博客, http://blog.csdn.net/u011967006

JavaSocket简单通信的更多相关文章

  1. Eclipse搭建服务器,实现与Android的简单通信

    ---恢复内容开始--- 目标:实现客户端(Android App)与服务器(PC)的简单通信 相关准备:eclipse_mars.tomcat8.Android Studio 实现: 1.java环 ...

  2. Spring+Netty4实现的简单通信框架

    参考:http://cpjsjxy.iteye.com/blog/1587601 Spring+Netty4实现的简单通信框架,支持Socket.HTTP.WebSocket_Text.WebSock ...

  3. 【转】Qt Socket简单通信

    最近要用到Qt的Socket部分,网上关于这部分的资料都比较复杂,我在这总结一下,把Socket的主要部分提取出来,实现TCP和UDP的简单通信. 1.UDP通信 UDP没有特定的server端和cl ...

  4. C# 简单通信(实现文件传输)

    https://blog.csdn.net/Sayesan/article/details/82185772 之前写过一个简单通信传输,不过只有聊天的功能,现在实现了文件传输的功能,借鉴于网上一篇博客 ...

  5. 基于TCP 协议的socket 简单通信

    DNS 服务器:域名解析 socket 套接字 : ​ socket 是处于应用层与传输层之间的抽象层,也是一组操作起来非常简单的接口(接受数据),此接口接受数据之后,交由操作系统 为什么存在 soc ...

  6. Python网络编程-Socket简单通信(及python实现远程文件发送)

    学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅. 先介绍下TCP的三次握手: 1,简单的发送消息: 服务器端: i ...

  7. 基于STM32F1与NRF24L01模块的SPI简单通信

    一.前言 1.简介: 本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信. 2.SPI简介: 调过STM8的都已经对SPI有所了解,调法都一 ...

  8. TCP和UDP并实现socket的简单通信

    http://www.cnblogs.com/IPrograming/archive/2012/10/15/CSharp_Socket_4.html http://www.cnblogs.com/do ...

  9. C#使用 UdpClient 类进行简单通信的例子

    UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报. 因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但您可以选择使用下面两 ...

随机推荐

  1. 用Git发布版本笔记

    1.首先,如果是发布的Develop分支,先从master建立HotFix分支,提交到git并指定关联关系 (git branch --set-upstream-to=D..) 2.对H分支进行功能完 ...

  2. cdoj842-天下归晋 【树状数组】

    http://acm.uestc.edu.cn/#/problem/show/842 天下归晋 Time Limit: 3000/1000MS (Java/Others)     Memory Lim ...

  3. MyBatis核心配置文件详解

    ------------------------siwuxie095                                     MyBatis 核心配置文件详解         1.核心 ...

  4. Gridview中 LinkButton删除以及自带删除

    <asp:LinkButton ID="lbtnDel" OnClientClick="return confirm('删除新闻会连同其下评论一起删除,是否删除?' ...

  5. xcode10 出现 框架 或者 pod 出错

    1. 报错 Showing Recent Messages :-1: Multiple commands produce '/Users/apple/Library/Developer/Xcode/D ...

  6. Markdown的简单使用

    markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.(扩展名为.md)   markdown语法 # 一级标题 ## 二级标题 ### ...

  7. hreeJS加载Obj资源后如何实现内存释放?

    问题: 我利用ThreeJS做了一个在同一个场景下动态加载Obj的页面,具体功能是:点击按钮A:加载A模型,点击按钮B:加载B模型...现在的问题是,前面已经加载过的模型,无法实现释放,内存一直在累加 ...

  8. [NOI.AC]COUNT(数学)

    解析: 也可以将所有的可能都计算出来,后进行减法运算. 代码: #include<bits/stdc++.h> using namespace std; #define ll long l ...

  9. PS大神的作品,每张都是科幻大片!

    相信大家在网上一定见过 各种PS的作品 但是要想成为“PS大神”, 不仅仅要会P图, 最关键的就是脑洞! 同样的马路破坏效果 在大神操作后变成了大片! 摩托车换成了骏马 这效果果然不一般! 这个绝对牛 ...

  10. cubieboard网络设置

    1.1 配置静态ip vi /etc/network/interface auto lo iface lo inet loopback #以下是添加的内如 auto eth0 #iface eth0 ...