利用socket实现Windows与Linux平台间的网络通信
本文关键词:利用socket实现Windows与Linux平台间的网络通信,由笔耕文化传播整理发布。
利用socket实现Windows与Linux平台间的网络通信
先令maxfd为0,再比较client_fd与maxfd的大小,将两者中较大的值赋给maxfd,即将文件描述符的最大值赋予maxfd。设置最大等待时间=1,=0。 retval=select(maxfd+1,&rfds,NULL,NULL,&tv),通过返回值retval判断文件的读写情况。若retval为-1,则出错;若retval为0,则继续等待;若retval为正值,则文件可读写,可以执行接下来的发送和接收消息的操作。2.1.3 发送与接收消息 if(FD_ISSET(0,&rfds))用来检查指定文件描述符0是否在该集合rfds中,若满足则执行发送操作。fgets(buf,,MAXBUF,stdin)表示将键盘输入的至多MAXBUF个字符的stdin送到buf中,摁下“Enter”键后即可发送。 同理,对于是否接收消息通过if (FD_ISSET(client_fd,&rfds))来判断。2.1.4 断开连接 若要断开连接,则输入“quit”。通过命令if(!strncasecmp(buf,"quit",4))来判断输入的内容是否为quit。连接断开后,显示框显示“Client has terminated the communication.”。2.2 Windows平台软件设计 在Windows系统中,使用C#语言来编写socket程序。打开Microsoft Visual Studio 2010,新建一个“Windows窗体应用程序”的项目。在窗体中添加两个button控件,分别为button1(连接)和button2(发送)。并添加4个textBox控件,分别为textBox1(消息显示框)、textBox2(消息输入框)、textBox3(服务器IP地址输入框)和textBox4(服务器端口号输入框)。2.2.1 请求连接 新建socket,Server和nPort分别表示服务器IP地址和端口号,通过命令socket.Connect(ServerIP,nPort)来连接服务器。2.2.2 发送与接收消息
定义发送的字符串为Message,将消息输入框textBox2中的内容指定为Message。通过
发送命令socket.Send(System.Text.Encoding.Default.GetBytes(Message))进行消息发送。 新建一个byte数组byte[] RecvBuffer,通过socket.Receive(RecvBuffer)将接收到的内容存放到RecvBuffer中。接收成功后,将接收到的内容显示在消息显示框中。3 运行结果与分析3.1 编译并执行Linux端程序 gcc server_socket.c-o server_scoket ./server_socket 3352 Server 此时,服务器端程序准备就绪,等待客户端请求连接。3.2 启动Windows端的连接 打开Microsoft Visual Studio 2010软件,点击“启动调试”键后弹出窗体界面。点击窗体界面中的“连接”键后,客户机端能够成功连接服务器端。3.3 实现互相通信 连接成功后,服务器端和客户机端可以自由发送消息。,Windows系统中,在窗体界面的“消息输入框”中输入消息,点击“发送”后即可发送。在Linux终端中,输入要发送的消息,点击“Enter”键后进行发送。。
3.4 结果分析 结果表明,服务器端和客户机端在成功连接后能够进行通信。在Linux系统中,通信结果在终端显示。在Windows系统中,通信结果在窗体界面中显示。经测试,两个平台间能够完成无数次的收发操作。若要结束通信,在Linux终端中键入“quit”,即断开连接。 本文阐述了Windows与Linux系统的网络传输设计方法,双方采用TCP/IP协议,运用socket 接口来开发网络通信程序。Windows平台利用C#编写socket程序,并通过窗体界面显示通信过程。Linux平台中的socket程序调用select函数,实现非阻塞操作。套接字使得连接在通信两端的进程,能够通过各自的套接字收发消息,从而实现了两个平台间的全双工通信。目前的通信程序只能传送字符串,要真正实现两个系统之间的资源共享与消息传递,还需要它们之间能够传送文件、照片及视频等大数据量的信息,这将是下一阶段的研究重点。
本文关键词:利用socket实现Windows与Linux平台间的网络通信,由笔耕文化传播整理发布。
本文编号:175196
本文链接:https://www.wllwen.com/kejilunwen/wltx/175196.html