网络编程小实例

//// TCP编程1:客户端给服务端发送信息。服务端输出此信息到控制台上

// 网络编程实际上就是Socket的编程

@Test

public void client1() {

// 1.创建一个Socket对象,指明ip地址和端口号

Socket socket = null;

// 2.通过socket.getOutputStream来创建一个outputstream的对象

OutputStream os = null;

try {

socket = new Socket(InetAddress.getByName("127.0.0.1"), 9898);

os = socket.getOutputStream();

// 3.利用os.write(),把要传输的内容写出去

String str = "你好,我是客户端";

byte[] b = str.getBytes();

os.write(b);

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

// 4.关闭相应的流

if (os != null) {

try {

os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (socket != null) {

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

@Test

public void server1() {

// 1.创建ServerSocket的对象来和客户端的接口建立连接

ServerSocket ss = null;

// 2.创建Socket对象来接收客户端发送的消息

Socket s = null;

// 3.创建输入流来读取

InputStream is = null;

try {

ss = new ServerSocket(9898);

s = ss.accept();

is = s.getInputStream();

// 4.读取的具体过程

byte[] b = new byte[20];

int len;

while ((len = is.read(b)) != -1) {

System.out.println(new String(b, 0, len));

}

System.out.println(

"接收到来自于" + s.getInetAddress().getHostAddress() + "的信息");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 5.关闭流

finally {

if (is != null) {

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (s != null) {

try {

s.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (ss != null) {

try {

ss.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

// TCP编程2:

// 客户端给服务端发送信息,服务端将信息打印到控制台上,同时发送“已收到信息”给客户端

@Test

public void client2() {

Socket socket = null;

OutputStream os = null;

InputStream is = null;

try {

socket = new Socket(InetAddress.getLocalHost(), 9898);

os = socket.getOutputStream();

os.write("小贝呀,是不是又偷吃糖葫芦了?".getBytes());

socket.shutdownOutput();

is = socket.getInputStream();

byte[] b = new byte[20];

int len;

while((len = is.read(b)) != -1){

System.out.print(new String(b,0,len));

}

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(is != null){

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(os != null){

try {

os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(socket != null){

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

@Test

public void server2() {

ServerSocket ss = null;

Socket s = null;

InputStream is = null;

OutputStream os = null;

try {

ss = new ServerSocket(9898);

s = ss.accept();

is = s.getInputStream();

byte[] b = new byte[20];

int len;

while ((len = is.read(b)) != -1) {

System.out.print(new String(b, 0, len));

}

System.out

.println("接收到来自" + s.getInetAddress().getHostAddress() + "的信息");

os = s.getOutputStream();

os.write("没有啊!!!不信你问我嫂子".getBytes());

os.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(os != null){

try {

os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(is != null){

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(s != null){

try {

s.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(ss != null){

try {

ss.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

时间: 2024-10-10 10:55:21

网络编程小实例的相关文章

大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目

第十五章 客户信息管理系统15.1 项目的开发流程15.2 项目的需求分析15.3 项目的界面15.4 项目的设计-程序框架图15.5 项目的功能实现15.5.1 完成 Customer 类15.5.2 完成显示主菜单和退出软件功能15.5.3 完成显示客户列表的功能15.5.4 完成添加客户的功能15.5.5 完成删除客户的功能15.5.6 完善退出确认功能15.5.7 完善删除确认功能15.5.8 完成修改客户的功能第十六章 并发编程模型 Akka16.1 Akka 的介绍16.2 Acto

Java网络编程-Nio 实例代码

IO NIO 区别请看 : http://blog.csdn.net/jiangtao_st/article/details/38041479 一.基于Nio的 Server ,过程略复杂,但是无疑这样的效率高:代码中得注释比较详细,请看注释说明 package com.zhuoxuan.net.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; imp

网络编程小知识

PDU 协议数据单元,有隐藏size上限,如果应用程序的包超过指定上限会被划分为多个PDU发送 TCP不提供记录结束标记,需要应用程序自己提供,比如http的\r\n 编写TCP协议需要注意IPV4和IPV6的兼容性,可以在应用程序中实现协议无关性. getaddrinfo 多线程的socket编程不能依赖于标准的errno变量,在多线程中,error通过返回值而不是errno的方式通知调用者. 出于网络安全的考虑,应当使用strncpy.strncat.snprintf替代无缓冲区检查的字符串

C# 网络编程小计 20150202

在学习网络Socket编程之前必须得学会多线程编程,这个是经常会用的到 可参考:http://www.cnblogs.com/GIS_zhou/articles/1839248.html System. Threading; 线程的命名空间 1 //线程的创建 2 Thread thread = new Thread(new ThreadStart(accp)); 3 static void accp() { 4 //.... 5 } 线程的创建

Python网络编程小例子:使用python获取网站域名信息

Whois简介 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商).通过whois来实现对域名信息的查询.早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询.网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用.whois通常

JAVA学习笔记(六十)- 网络编程登录实例

客户端 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import ja

Java TCP网络编程 简单实例

先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.这次请求处理完毕,启动的线程消亡.如果客户端接收到 "OK" 之外的返回数据,会再次发送连接请求并发送数据,服务器会为这次连接再次启动一个线程来进行响应...直到当客户端接收到的返

Java UDP网络编程 简单实例

服务端代码 /** *UDPClient *@author Winty [email protected] *@version 2008-12-15 */ import java.io.*; import java.net.*; class UDPClient{ public static void main(String[] args)throws IOException{ DatagramSocket client = new DatagramSocket(); String sendStr

网络编程小计

1. 客户端connect的时候如果报10061 // MessageId: WSAECONNREFUSED//// MessageText://// No connection could be made because the target machine actively refused it.//#define WSAECONNREFUSED                  10061L 导致的原因有一种就是服务端的accept出现了问题,没有人接收客户端请求 原文地址:https:/