Socket编程
来源:互联网 发布:并行计算编程 编辑:程序博客网 时间:2024/05/22 02:21
1.什么是Socket
a. Socket的英文原意是"插座"
b. 所谓Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄
c. 应用程序通常通过"套接字"向网络发送请求或者应答网络请求
2.Socket基本通讯模型
3.使用基于TCP协议的Socket
4.使用基于UPD协议的Socket
5.编写程序
a.创建两个项目Client,Socket
b.Client项目有两个文件TCPClient.java,UDPClient.java
TCPClient.java中的代码如下:
package wei.cao.test;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class TCPClient {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubtry {//创建一个Socket对象,指定服务端的IP地址和端口Socket socket=new Socket("192,168,1,104",4567);//使用InputStream读取硬盘上的文件InputStream inputStream=new FileInputStream("D://test.txt");//从Socket当中得到OutputStreamOutputStream outputStream=socket.getOutputStream();byte buffer[]=new byte[4*1024];int temp=0;//将inputStream当中的数据取出,并写入到outputStream当中while((temp=inputStream.read(buffer))!=-1){outputStream.write(buffer);}outputStream.flush();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
UDPClient.java中的代码如下:
package wei.cao.test;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class UDPClient {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub try { //首先创建一个DatagramSocket对象DatagramSocket socket=new DatagramSocket(4567);try {//创建InetAddress对象InetAddress serverAddress=InetAddress.getByName("192.168.1.104");String str="Hello";byte data[]=str.getBytes();//创建一个DatagramPacket对象,并指定要讲这个 数据包发送到网络当中的哪个地址,以及端口号DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,4567); try { //调用Socket对象的send方法,发送数据socket.send(packet);} catch (IOException e) {e.printStackTrace();}} catch (UnknownHostException e) {e.printStackTrace();}} catch (SocketException e) {e.printStackTrace();}}}
c.Socket项目中有一个SocketActivity.java文件,代码如下
package wei.cao.test;import java.io.IOException;import java.io.InputStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class SocketActivity extends Activity { /** Called when the activity is first created. */private Button btnStartSocket; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnStartSocket=(Button)this.findViewById(R.id.btnStartSocket); btnStartSocket.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {new ServerThread().start();}}); } class ServerThread extends Thread { //基于TCP的public void run() {//声明一个ServerSocket对象ServerSocket serverSocket=null; try { //创建一个ServerSocket对象,并让Socket在4567端口监听serverSocket=new ServerSocket(4567);//调用serverSocket的accept()方法,接收客户端所发送的请求(阻塞的方法,如果客户端没有发送请求,就不会向下运行)Socket socket=serverSocket.accept();//从Socket当中得到InputStream对象InputStream inputStream=socket.getInputStream();byte buffer[]=new byte[1024*4];int temp=0;//从inputStream当中读取客户端所发送的数据while((temp=inputStream.read(buffer))!=-1){System.out.print(new String(buffer,0,temp));}} catch (IOException e) {e.printStackTrace();} finally{try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}} } //基于UDP的public void run2(){try {//创建一个DatagramSocket对象,并指定监听的端口号DatagramSocket socket=new DatagramSocket(4567);byte data[]=new byte[1024];//创建一个空的DatagramPacket对象DatagramPacket packet=new DatagramPacket(data,data.length);try {//用receive方法接收客户端所发送 的数据socket.receive(packet);System.out.println(packet.getLength());} catch (IOException e) {e.printStackTrace();}} catch (SocketException e) {e.printStackTrace();}} }}
- socket编程--socket基本概念
- socket编程--socket基本概念
- socket编程
- socket编程
- Socket 编程
- socket编程
- Socket编程
- Socket编程
- Socket编程
- Socket编程
- SOCKET编程
- socket编程
- Socket编程
- socket编程
- Socket 编程
- Socket 编程
- socket 编程
- socket编程
- URAL 1013. K-based Numbers. Version 3
- JavaScript内存释放
- ldd命令原理及用法例子
- 原来失而复得是这样一种心情
- MFC设计局域网对战五子棋游戏(四)GDI+和GDI混合双缓冲绘图
- Socket编程
- flex入门学习笔记
- solr3.6已发布
- win7如何不用点击用户名 直接自动登录桌面
- 分治算法
- SQLserver中用convert函数转换日期格式
- windows 7声卡麦克设置
- Oracle9i 如何连接到oms
- Linux内核和用户空间通信的方式— proc文件和mmap共享内存