文档章节

socket编程

chenruibing
 chenruibing
发布于 2015/06/14 19:32
字数 756
阅读 38
收藏 0

精选30+云产品,助力企业轻松上云!>>>

ip标识一台计算机,端口则是标识一个应用程序。

/*
网络层就是给定要去的ip地址。。。
通过物理层传播出去,网线就是标准的物理层设备。。。。。。光纤和无线也是。。。
Scoket就是插口。。。。。。
每一应用程序都有这样一个插口,通过插口调用底层资源来通信。。。
想要通信就一定要有插口。。。
网络编程就是Scoket编程。。。
reciver是阻塞方法,Readline也是阻塞方法。。。

Ip地址最后一段一般都是1到254   0和255是不能使用的,0一般代表的是一个网络段,255代表的则是广播段。。。。。。

ip标识一台计算机,端口则是标识一个应用程序。。。。。。
*/
import java.net.*;
import java.io.*;
class anli
{
	public static void main (String[] args)throws Exception  //网络编程的使用一定要抛出异常的。。。
	{
		//oftenUse();
		Upddemo();
	}
	public static void Upddemo()throws Exception
	{
		DatagramSocket ds = new DatagramSocket();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = null;
		while((line = br.readLine())!= null)
		{
			if("over".equals(line))
			{
				break;
			}
			byte[] bt = line.getBytes();
			DatagramPacket dp = new DatagramPacket(bt,bt.length,InetAddress.getByName("192.168.109.119"),1000); //1000是发送的端口
			ds.send(dp);
		}
		//byte[] bt = "chenruibing".getBytes();
		
		ds.close();
	}
	/*public static void oftenUse()throws Exception
	{
		InetAddress i = InetAddress.getLocalHost(); //静态方法,返回的是计算机的名字和ip值
		//InetAddress i = InetAddress.getByName("192.168.109.119");  //返回的也只是ip地址,可以查找局域网或者当时正处于网络上的主机
		//InetAddress[] i = InetAddress.getAllByName("WCL2BX2RZXDQBKM");//由主机名字,返回其 IP 地址所组成的数组,返回值是数组
		sop(i.toString());
		sop(i.getHostName());  //获取主机名
		sop(i.getHostAddress());//获取ip
		for(InetAddress j : i)
		{
			sop(j);
		}
	}*/
	public static void sop (Object obj)
	{
		System.out.println(obj);
	}
}


class rec //接收端一般是不关闭的
{
	public static void main (String[] args)throws Exception
	{
		DatagramSocket ds = new DatagramSocket(1000);  //接受方要监听端口。。。
		while(true)
		{
			byte[] bt = new byte[1024];  //用来存放发送过来的数据
			DatagramPacket dp = new DatagramPacket(bt,bt.length);//数组不用加括号,字符串才要用括号
			ds.receive(dp);		//好像并不是一定要接受的。。。
			String ip = dp.getAddress().getHostAddress();
			String data = new String(dp.getData(),0,dp.getLength());//获取缓冲区的数据其实就是获取发过来的数据
			int port = dp.getPort();
			sop(ip+"::"+data+"::"+port); //port指定端口是随机的,因为在发送端哪里没有指定一个确定的发送端口。。。
		}
		
	}
	public static void sop (Object obj)
	{
		System.out.println(obj);
	}
	
}

oneThread to conversation

import java.io.*;
import java.net.*;
public class anli
{
	public static void main (String[] args)throws Exception
	{
		DatagramSocket send = new DatagramSocket();
		DatagramSocket rec = new DatagramSocket(10086);
		new Thread(new sendclass(send)).start();
		new Thread(new recclass(rec)).start();
	}

}
class sendclass implements Runnable
{
	private DatagramSocket ds;
	sendclass(DatagramSocket ds)
	{
		this.ds = ds;
	}
	public void run ()
	{
		try
		{
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String line = null;
			while((line = br.readLine())!=null)
			{
				if("over".equals(line))
					break;
				byte[] bt = line.getBytes();   //以字节的方式传递数据
				DatagramPacket dp = new DatagramPacket(bt,bt.length,InetAddress.getByName("192.168.109.119"),10086);
				ds.send(dp);
			}
			br.close();
			ds.close();
		}
		catch (Exception e)
		{
			throw new RuntimeException ("发送端失败");
		}
	}
}
class recclass implements Runnable
{
	private DatagramSocket ds;
	recclass(DatagramSocket ds)
	{
		this.ds = ds;
	}
	public void run ()
	{
		try
		{
			while(true)
			{
				byte[] bt = new byte[1024];
				DatagramPacket dp = new DatagramPacket(bt,bt.length);//接受包
				ds.receive(dp);
				String ip = dp.getAddress().getHostAddress();  //使用接受包来获取数据   因为数据都是放在接受包里面的。。。
				String data = new String(dp.getData(),0,dp.getLength());
				sop(ip+"::"+data);
			}
		}
		catch (Exception e)
		{
			throw new RuntimeException ("接受端失败");
		}
	}
	public static void sop (Object obj)
	{
		System.out.println(obj);
	}
}



上一篇: File类
chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
私信 提问
加载中
请先登录后再评论。
博客导航

Socket网络编程--聊天程序   Socket网络编程--聊天程序(1)    http://www.cnblogs.com/wunaozai/p/3870156.html   Socket网络编程--聊天程序(2)    http://www.cnblogs.com/wuna...

无脑仔的小明
2014/09/01
0
0
C#网络编程系列文章(六)之Socket实现同步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 文章系列目录 C#网络编程系列文章(一)之Socket实现异步TCP服务器 C#网络编...

zhujunxxxxx
2015/03/16
0
0
C#网络编程系列文章(六)之Socket实现同步UDP服务器

版权声明: https://blog.csdn.net/zhujunxxxxx/article/details/44303697 原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处......

小竹zz
2015/03/16
0
0
C#网络编程系列文章(五)之Socket实现异步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 文章系列目录 C#网络编程系列文章(一)之Socket实现异步TCP服务器 C#网络编...

zhujunxxxxx
2015/03/15
0
0
Java Socket编程如何建立两者关系

转自:http://developer.51cto.com/art/201003/190582.htm Java Socket编程需要大家详细的学习,有关的技术一直在不断的更新。那么要如何才能掌握好有关的技术更新呢?接下来我们就来学些有关...

osc_gzyujipq
2018/12/02
10
0

没有更多内容

加载失败,请刷新页面

加载更多

实例分析mysql用户登录

今天,在学习mysql授权认证时,遇到了一个问题,看下,我是如何分析的: 我在数据库内添加了一个帐号: create databases firstdb; grant all on firstdb.* to ‘firstdb’@’’ identified...

osc_ohsup7nf
51分钟前
9
0
mysql复制

[我会陆续推出有关mysql架构的文章,希望能给大家带来帮助!] 先贴张图,大家常见的。 环境: Centos5.2 Mysql 5.1.44 Master:192.168.x.166 Slaver:192.168.x.172 Master数据库安装操作 下载...

osc_neocf7df
51分钟前
11
0
批量下载国家地理壁纸Python脚本(wxpython版)

[今天在CU的python版里看到一篇"批量下载国家地理壁纸Python脚本"。感觉不错,借此,用wxpython写了一个GUI的界面。] 部分代码 import wx from getimg import getimg class GetImgFrame(wx.F...

osc_hcjj25bn
52分钟前
14
0
Python之sys模块小探

Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处。借马云找员工的说法,”找最合适的而不是最天才的”,这句话,我个人觉得在很多方面都能适应,学习也不在话下。Sys模块功能...

osc_3nr2bq5w
54分钟前
10
0
Centos5.4下安装kvm手册

[前段时间学习了xenserver,感觉不错,就是对他的免费感觉质疑,如果后期他某一天不提供免费了,那我不惨了。所以,我还是将学习方向转到开源的领域了。] (1)Centos5.4安装,升级 开启SELin...

osc_ucqb2u3q
55分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部