关键词不能为空

当前您在: 主页 > 英语 >

Socket客户端和服务端的编程实现

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-15 21:16
tags:

-

2021年2月15日发(作者:sea)





2014






2015



学年








学期



实验课程名称:









计算机新技术讲座














实验项目名称



实验者



客户和服务器通信编程实现




专业


班级




实验成绩



实验日期






第一部分:实验分析与设计



一、



实验内容描述(问题域描述)




1


、实验目的




理解套接字


(socket)


通信的基本原理和机制




理解进程间通信的机制。




2


、实验要求





分别编写客服端和服务器端代码,


建立客户端与服务器端之间正确的


socket


连结


(语言自选,


附源代码)




二、



实验 基本原理与设计


(包括实验方案设计,


实验手段的确定,



验步骤等)



1.


实验原理



网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个


socket




Socket


的英文原义是







插座


”< /p>


。作为


BSD UNIX


的进程通信机制 ,取后一种意思。通常


也称作



套接字< /p>




用于描述


IP


地址和端口,


是一个通信链的句柄,


可 以用来实现不同虚拟机或


不同计算机之间的通信。在


Inter net


上的主机一般运行了多个服务软件,同时提供几种服务。


每种服务都打开一个


Socket


,并绑定到一个端口上,不同 的端口对应于不同的服务。


Socket


如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编


号,有的插座提供


220


伏交流电,

< br>


有的提供


110


伏交流电,有 的则提供有线电视节目。



客户


软件将 插头插到不同编号的插座,就可以得到不同的服务。



常用的< /p>


Socket


类型有两种:


流式


Socket



SOCK_STREAM



和数据报式


Socket

< br>(


SOCK_DGRAM



。< /p>


流式是一种面向连接的


Socket


,< /p>


针对于面向连接的


TCP


服务应用;


数据报式


Socket


是一种无连


接的


Socket



对 应于无连接的


UDP


服务应用。



Socket


建立为了建立


Socket< /p>



程序可以调用


Socket

< p>
函数,该函数返回一个类似于文件描述符的句柄。


socket

< p>
函数原型为:


int socket(int domain, int


type,


int


protoco l);domain


指明所使用的协议族,通常为


PF_INE T


,表示互联网协议族(


TCP/IP


协议族)



type


参数指定


socket


的类型:


SOCK_STREAM



SOCK_DGRAM


< p>
Socket


接口还定义


了原始

< br>Socket



SOCK_RAW



,允许程序使用低层协议;


protocol


通常赋值




Socket( )


调用返


回一个整型


socket


描述符,你可以在后面的调用使用它。



S ocket


描述符是一个指向内部数据


结构的指针,它指向描述 符表入口。调用


Socket


函数时,


socket


执行体将建立一个


Socket

< br>,实


际上



建立一个


Socket


意味着为一个


Socket

< p>
数据结构分配存储空间。



Socket


执行体为你管理


描述符表。两个网络程序之间的一个网络连接包括五种信 息:通信协议、本地协议地址、本地


主机端口、远端主机地址和远端协议端口。


Socket


数据结构中包含这五种信息。


< /p>


Socket


在测


量软件中的使用也很广 泛。







2.


实验步骤



本实验在


Visual Studio 2010


以及安卓模拟器下实现,


项目包括安卓客户端源码和服


务端


C#


源码,


本机


ip


为,


实验要实现客户端与服务端在


4567


号端口的通信,


具体


代码如下:





服务端核心代码:



using System;



using



;



using ;



using



using



using ;



using



;



using ;



using



;




namespace MySocketServer



{







public


partial


class


FormServer : Form







{











public


FormServer()











{















InitializeComponent();











}











ddressFamily ==























{



























[


i


].ToString());























}



















}



















return



listIP


;















}















catch


(Exception


ex


)















{



















(



获取本机


IP


出错


:


+



















();



















return



listIP


;















}











}







}



}





客户端核心代码:



package



















class


MainActivity


extends


Activity {





private


TextView


textReceive


=


null


;




private


EditText


textSend


=


null


;




private


Button


btnConnect


=


null


;




private


Button


btnSend


=


null


;




private



static



final


String


ServerIP


=



;




private



static



final



int



ServerPort


= 4567;




private


Socket


socket


=


null


;




private


String


strMessage


;




private



boolean



isConnect


=


false


;




private


OutputStream


outStream


;




private


Handler


myHandler


=


null


;




private


ReceiveThread


receiveThread


=


null


;




private



boolean



isReceive


=


false


;






@Override




protected



void


onCreate(Bundle


savedInstanceState


) {





(< /p>


savedInstanceState


);




setContentView






textReceive


= (TextView)findViewById


textSend


= (EditText)findViewById



btnConnect


= (Button)findViewById



btnSend


= (Button)findViewById







tart();







}






}





});






oString();







new


Thread(


sendTh read


).start();






}





});





myHandler


=


new


Handler(){






@Override






public



void


handleMessage(Message


msg


){







(.toString());






}





};




}




rim();







}


catch


(UnsupportedEncodingException


e


) {










getMenuInflater().inflate


menu


);





return



true


;




}


-


-


-


-


-


-


-


-



本文更新与2021-02-15 21:16,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/656269.html

Socket客户端和服务端的编程实现的相关文章