Java 简单的 socket 编程入门实战
这个是给女朋友写的:)
首先需要知道我们每个电脑都可以成为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 编程入门实战的更多相关文章
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 读懂Java中的Socket编程(转)
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- java中的socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 最基础的Python的socket编程入门教程
最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...
- java基础之Socket编程概述以及简单案例
概述: 用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互 也就是用来在不同的电脑间, 进行数据传输. 三大要素: IP地址: 设备(电脑,手机,ipad)在网络中的唯一标识. 组成 ...
- Socket编程入门
socket基本知识 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(AP ...
- 一个项目看java TCP/IP Socket编程
前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互 ...
- java.net.Socket/java.net.ServerSocket-TCP Socket编程
TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
随机推荐
- ionic 项目中使用ngCordova插件$cordovaCamera筛选手机图库图片显示出来并上传
原文档请看http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ionic%E5%9B%BE%E7%89%87%E4%B8%8A%E4%B ...
- 【转载】The Elements of Programming Style之代码风格金科玉律
原始日期: 2017-02-06 16:20 <The Elements of Programming Style >是一本很古老的书.尽管 Fortran 我们不太使用,尽管新奇的语言层 ...
- js调试模式控制台输出信息
js调试模式控制台输出信息.console.log
- php5.6在yum下安装redis
yum install redis php-redis --enablerepo=remi,remi-php56 设置redis开机自动启动,具体路径以实际为准, echo "/usr/bi ...
- golang中defer的使用规则
转自个人博客chinazt.cc 在golang当中,defer代码块会在函数调用链表中增加一个函数调用.这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用. ...
- [leetcode-508-Most Frequent Subtree Sum]
Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a ...
- 【Android Developers Training】 90. 序言:解决云储存冲突
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面
在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...
- servlet+jsp update修改页面的实现,整整搞了两个小时才搞定
package DAO; public class books { private int bid; private String bname; private int booksl; private ...
- VB6之反编译工具VBRezQ
该软件的下载地址:http://www.xiazaiba.com/html/5276.html 网站上是这么介绍的: VBRezQ是一个针对VB程序的反编译软件.VBRezQ反编译的可读性尤其对早期版 ...