这个是给女朋友写的:)

首先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端)

我们需要使用java来实现客户端与服务器的数据传输

先帖上代码

注意这里两张代码处于两个java project 中,因为我们实际上情况上是两台电脑来运行,但是由于演示方便这里就本机既充当

客户端也充当服务器。。。。。

服务端::

package net;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class Server { public Server()
{
try {
// conn为connection的缩写;ServerSocket服务器端口
// 后面ServerSocket(1234)里面的1234为端口号,要大于 1024小于65535. 0~1024为系统预留的端口号,总共一共有65535个端口号
ServerSocket ss = new ServerSocket(1234); // 服务器新建一个端口,端口号为1234
System.out.println("成功启动服务器,等待客户端连接!!!!!!!"); Socket tcpConn = ss.accept(); // 接收客户端的链接
// tcpConn.getInetAddress()获取连入服务器的客户端的ip地址; tcpConn.getPort()获取连入服务器的客户端的端口号
System.out.println("收到客户端连接,来自:" + tcpConn.getInetAddress() + ":" + tcpConn.getPort()); // 读取客户端给服务器的东西,并且返回东西给客户端
InputStream in = tcpConn.getInputStream(); // 获取数据
Scanner netIn = new Scanner(in); // 用这个方法可以获取客户端传过来的数据,但不是很好。接收传过来的东西
OutputStream out = tcpConn.getOutputStream(); String receiveStr = netIn.nextLine(); // 读取客户端给服务器的东西,存在变量里面
System.out.println("收到来自客户端得数据:" + receiveStr); String returnStr = "0.0" + receiveStr + "\n"; // 后面加了一个\n是为了配合Scanner方法
out.write(returnStr.getBytes()); // 将这个东西返回到客户端
System.out.println("返回给客户端的数据:" + returnStr); // 全部关闭
in.close();
out.close(); tcpConn.close(); ss.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
new Server(); } }

  

客户端::

package net;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class Client { public Client()
{
try {
// new一个端口出来,前面的"127.0.0.1"为本机的ip地址,后面的1234为需要连接的服务器的端口号
Socket tcpConn = new Socket("127.0.0.1",1234);
System.out.println("成功连接到服务器!!!!!!!"); // 向服务器发送东西,并且接受服务器的返回
InputStream in = tcpConn.getInputStream();
OutputStream out = tcpConn.getOutputStream();
Scanner netIn = new Scanner(in); // 这个是为了接收传过来的东西 System.out.println("请输入要发送给服务器的数据:");
Scanner keyIn = new Scanner(System.in);// 读取键盘输入
String str = keyIn.nextLine() + "\n"; // 读取键盘输入,赋值给字符串
out.write(str.getBytes());//写入流操作必须是字节类型写入 String returnStr = netIn.nextLine(); // 接收服务器传过来的东西,赋值给一个字符串
System.out.println("接收到来自服务器的返回数据:" + returnStr); in.close();
out.close(); tcpConn.close(); } catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
new Client(); } }

  注意运行时,用编译器ide运行是不行的,因为编译器无法同时运行两个主函数

所以我们需要使用控制台cmd来操作两个项目

————————如何使用cmd的方法当然也有哦::点击进入查看如何使用cmd运行java

执行结果如下:

服务器

客户端

以上谢谢学习!!!

Java 简单的 socket 编程入门实战的更多相关文章

  1. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  2. 读懂Java中的Socket编程(转)

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  3. java中的socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  4. 最基础的Python的socket编程入门教程

    最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...

  5. java基础之Socket编程概述以及简单案例

    概述: 用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互  也就是用来在不同的电脑间, 进行数据传输. 三大要素: IP地址: 设备(电脑,手机,ipad)在网络中的唯一标识. 组成 ...

  6. Socket编程入门

      socket基本知识 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(AP ...

  7. 一个项目看java TCP/IP Socket编程

    前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互 ...

  8. java.net.Socket/java.net.ServerSocket-TCP Socket编程

    TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...

  9. python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

随机推荐

  1. [POJ 2115} C Looooops 题解(扩展欧几里德)

    题目描述 对于C的for(i=A ; i!=B ;i +=C)循环语句,给出A,B,C和k(k表示变量是在k进制下的无符号整数),判断循环次数,不能终止输出"FOREVER". 输 ...

  2. Python:Anaconda安装虚拟环境到指定路径

    1 曾经的困扰 有段时间,想使用基于不同python版本的anaconda,就直接从官网下载了两个不同的anaconda版本进行安装.刚开始的时候,还觉得也没啥问题.用了一小段时间,在安装其他的第三方 ...

  3. Redis中的基本数据结构

    Redis基础数据结构 基础数据结构 sds简单动态字符串 数据结构 typedef struct sdstr{ int len // 字符串分配的字节 int free // 未使用的字节数 cha ...

  4. Matlab: 路径的操作

    添加相对路径 在matlab中当代码很多时常常将结果存在不同的文件夹下面,常常使用相对路径对函数进行调用,但有时会存在问题.举个栗子: 代码结构如下: /codes/A/AA/code1.m /cod ...

  5. peoplesoft function PSTREENODE 通过 deptid 获得部门树 全路径 名称

    create or replace function getUnitFullName(deptid in varchar) return varchar2 is r ); c int; n ); m ...

  6. VB6之GDI+加载PNG图片

    原生的VB6不支持PNG个图片,因为刚有VB的时候还没有PNG的概念呢.不过,利用GDI+加载解析个PNG简直是砍瓜切菜般简单. GDI+的模块是我在网上下载的,地址应该是:http://vistas ...

  7. c++数组易错点总结

    c++数组 1.只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组 int cards[4] = { 3 , 6 , 8 , 10}; //ok int hands[4] ...

  8. xhr.readyState的就绪状态

    0:初始化,XMLHttpRequest对象还没有完成初始化 1:载入,XMLHttpRequest对象开始发送请求 2:载入完成,XMLHttpRequest对象的请求发送完成 3:解析,XMLHt ...

  9. 新笔记tst

    这是测试文章 来自为知笔记(Wiz)

  10. maven工程中pom.xml的错误

    更新maven工程,出现如下错误信息. Could not calculate build plan: Failure to transfer org.apache.maven.plugins:mav ...