网络编程小实例

//// 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();

}

}

}

}

时间: 12-03

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

网络编程小知识

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

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

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

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

[python] 网络编程之套接字Socket、TCP和UDP通信实例

很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 C#网络编程之使用Socket类Send.Receive方法的同步通讯 Python网络编程也类似.同时最近找工作笔试面试考察Socket套接字.TCP\UDP区别比较多,所以这篇文章主要精简了<Python核心编程(第二版)>第16章内容.内容包括:服务器和客户端架构.套接字Socket.TCP\UDP通信实例和常见笔试考题. 最后希望文章对你有所帮助,如果有不

Unix 网络编程(四)- 典型TCP客服服务器程序开发实例及基本套接字API介绍

写在开头: 在上一节中我们学习了一些基础的用来支持网络编程的API,包括"套接字的地址结构"."字节排序函数"等.这些API几乎是所有的网络编程中都会使用的一些,对于我们正确的编写网络程序有很大的作用.在本节中我们会介绍编写一个基于TCP的套接字程序需要的一些API,同时会介绍一个完整的TCP客户服务器程序,虽然这个程序功能相对简单,但确包含了一个客户服务器程序所有的步骤,一些复杂的程序也都是在此基础上进行扩充.在后面随着学习的深入,我们会给这个程序添加功能. 下面

Java学习之网络编程实例

转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码

Python Socket,How to Create Socket Server? - 网络编程实例

文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programing in Python: Part2: Programing sockets servers. 在所有的通信实例中,都分为Client 和Server. 其中:Client是请求的发起点,Server是使用Socket接收传入的值并且提供返回数据. Server的职能如下: 1>.创建/打开一个so

linux下网络编程学习——入门实例ZZ

http://www.cppblog.com/cuijixin/archive/2008/03/14/44480.html 是不是还对用c怎么实现网络编程感到神秘莫测阿,我们这里就要撕开它神秘的面纱,呵呵. 一起来: 诶,不要着急,我们先来介绍一些网络程序的主要执行过程,主要是便于大家更好的理解下面的程序实例哦 : 1)系统启动服务器执行.服务器完成一些初始化操作,然后进入睡眠状态,等待客户机请求.2)在网络的某台机器上,用户执行客户机程序3)客户机进行与服务器进程建立一条连接4)连接建立后,客

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr

【网络编程】用Socket实现聊天小程序

客户端: 1 package day18_网络编程; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.OutputStream; 7 import java.net.Inet4Address; 8 import java.net.InetAddress; 9 import java.net.Socket; 10 impo