socket编程的基本过程(SOCKET编程实现服务器端的步骤是什么)

2024-07-12 04:13:49 63

socket编程的基本过程(SOCKET编程实现服务器端的步骤是什么)

本文目录

SOCKET编程实现服务器端的步骤是什么

Java版本1.编写服务器端,实例化ServerSocket对象,这里要定义ip和端口,实例化Socket,从ServerSocket对象中accept() 获取,这里要涉及到流,输入输出流在Socket中获取2.编写客户端,实例化Socket对象,ip,端口,流,在Socket中获取如果想要具体代码,就留言,有空发给你

请问Socket编程的基本步骤是怎样的最好能写一个简单的程序Java演示一下,主要是接受数据谢谢!

SERVER端:--------------------------------------------------------import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server extends Thread {    private Socket clientSocket;    public Server(Socket clientSocket) {        this.clientSocket = clientSocket;    }    public void run() {        DataInputStream dis = null;        DataOutputStream dos = null;        try {            dis = new DataInputStream(clientSocket.getInputStream());            dos = new DataOutputStream(clientSocket.getOutputStream());            while (true) {                String temp = dis.readUTF();                if (“over“.equals(temp)) {                    break;                }                dos.writeUTF(“from server:“ + temp);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if (dis != null) {                    dis.close();                }                if (dis != null) {                    dos.close();                }                if (clientSocket != null) {                    clientSocket.close();                }            } catch (IOException e) {            }        }    }    public static void main(String args) throws Exception {        ServerSocket ss = new ServerSocket(8008);        while (true) {            Socket clientSocket = ss.accept();            // 针对每个客户端, 启一个Server线程专门处理此客户端的请求。            Server server = new Server(clientSocket);            server.start();        }    }}CLIENT端:----------------------------------------import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.net.Socket;public class Client {    public static void main(String args) throws Exception {        // 输入流1, 从键盘进入Client。        InputStreamReader isr = new InputStreamReader(System.in);        BufferedReader br = new BufferedReader(isr);        Socket clientSocket = new Socket(“127.0.0.1“, 8008);        // 输入流2, 从服务器端进入Client的流对象。        DataInputStream dis = new DataInputStream(clientSocket.getInputStream());        // 输出流, 从Client出去, 到服务器端。        DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());        while (true) {            // 从键盘输入读取            String msg = br.readLine();            // 将读取信息发送给服务器端            dos.writeUTF(msg);            //输入QUIT退出            if (“QUIT“.equals(msg)) {                break;            }            //读取从服务器返回的信息            String temp = dis.readUTF();            System.out.println(temp);        }        br.close();        dis.close();        dos.close();        clientSocket.close();    }}

mfc socket 编程的流程是怎么样的

初始化socket首先需要调用AfxSocketInit()函数来初始化我们的socket环境。为了初始化sockets,我们需要调用AfxSocketInit()函数。它通常是在MFC中的InitInstance()函数中被调用的。如果我们用程序向导来创建socket程序的话,查看“use Windows Sockets”这个选项,然后选中它。它将会自动的为我们创建这个步骤了。(如果我们没有选中这个选项的话,我们也可以手动添加这些代码的。)这个函数的返回值显示这个函数的调用成功或失败。BOOL CServerApp::InitInstance(){....if( AfxSocketInit() == FALSE) { AfxMessageBox(“Sockets Could Not Be Initialized“); return FALSE; } ...}创建Server Sockets为了创建一个Server Socket,我们需要声明一个CAyncSocket的变量或者我们自己定制的一个从AyncSocket或是Cscket继承来的类的类型的变量。然后调用Create()函数,同时指定监听的端口。这个函数的返回值显示这个函数的调用成功或失败。UpdateData(TRUE);m_sListener.Create(m_port);if(m_sListener.Listen()==FALSE) { AfxMessageBox(“Unable to Listen on that port,please try another port“); m_sListener.Close(); return; }创建Client Sockets为了创建Client socket类,我们需要声明一个CAyncSocket的变量或者我们自己定制的一个从AyncSocket或是Cscket继承来的类的类型的变量。然后调用Create()函数,同时指定监听的端口。这个函数的返回值显示这个函数的调用成功或失败。m_sConnected.Create();m_sConnected.Connect(“server ip“,port);监听客户端的连接创建了server socket以后,我们要进行监听。调用Listen()函数。这个函数的返回值显示这个函数的调用成功或失败。if( m_sListener.Listen()== FALSE) { AfxMessageBox(“Unable to Listen on that port,please try another port“); m_sListener.Close(); return;}接受连接连接请求要被接受accept,是用另外的socket,不是正在监听的socket。请参看代码。void CXXXDlg::OnAccept(){ CString strIP; UINT port; if(m_sListener.Accept(m_sConnected)) { m_sConnected.GetSockName(strIP,port); //应该是GetPeerName,获取对方的IP和port m_status=“Client Connected,IP :“+ strIP; m_sConnected.Send(“Connected To Server“,strlen(“Connected To Server“)); UpdateData(FALSE); } else { AfxMessageBox(“Cannoot Accept Connection“); } }发送数据数据放在一个buffer中或是结构体中,调用send()函数发送。m_sConnected.Send(pBuf,iLen);接受数据调用receive()接受数据。void CXXXrDlg::OnReceive() { char *pBuf =new char ; CString strData; int iLen;iLen=m_sConnected.Receive(pBuf,1024); if(iLen == SOCKET_ERROR) { AfxMessageBox(“Could not Recieve“); } else { pBuf=NULL; strData=pBuf; m_recieveddata.Insert(m_recieveddata.GetLength(),strData); //display in server UpdateData(FALSE); m_sConnected.Send(pBuf,iLen); //send the data back to the Client delete pBuf; } }关闭连接m_sConnected.ShutDown(0); 停止发送数据m_sConnected.ShutDown(1); 停止接受数据m_sConnected.ShutDown(2); 停止发送接受数据m_sConnected.Close();编写自己的socket类在class view中选择添加一个新类,设置它的基类为CAsyncSocket,在类向导的帮助下添加如下的一些函数。class MySocket : public CAsyncSocket{ // Attributes public: // Operationspublic: MySocket(); virtual ~MySocket(); // Overrides public: void SetParentDlg(CDialog *pDlg);// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(MySocket) public: virtual void OnAccept(int nErrorCode);virtual void OnClose(int nErrorCode);virtual void OnConnect(int nErrorCode);virtual void OnOutOfBandData(int nErrorCode);virtual void OnReceive(int nErrorCode); virtual void OnSend(int nErrorCode); //}}AFX_VIRTUAL // Generated message map functions //{{AFX_MSG(MySocket) // NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG protected: private:CDialog * m_pDlg; };设置“Parent Dialog”调用这个socket类的SetParentDlg函数,保证当socket事件发生的时候这个窗体能接收到。m_sListener.SetParentDlg(this); m_sConnected.SetParentDlg(this);建立Socket 事件和窗体成员函数之间的联系在这个窗体类中添加一些函数,比如void OnReceive(); void OnClose(); void OnAccept(); void OnConnect()等,它们会在我们编写的的socket类中调用到。void MySocket::OnAccept(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class if(nErrorCode==0) { ((CServerDlg*)m_pDlg)-》OnAccept(); }CAsyncSocket::OnAccept(nErrorCode); }

socket编程的基本过程(SOCKET编程实现服务器端的步骤是什么)

本文编辑:admin

更多文章:


熊猫个人简历模板下载(熊猫云简历怎么免费导出)

熊猫个人简历模板下载(熊猫云简历怎么免费导出)

各位老铁们好,相信很多人对熊猫个人简历模板下载都不是特别的了解,因此呢,今天就来为大家分享下关于熊猫个人简历模板下载以及熊猫云简历怎么免费导出的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录熊猫云简历怎么免费导出

2024年9月5日 17:30

微信菜单栏在哪里(微信添加工具栏在哪)

微信菜单栏在哪里(微信添加工具栏在哪)

这篇文章给大家聊聊关于微信菜单栏在哪里,以及微信添加工具栏在哪对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录微信添加工具栏在哪如何设置微信菜单栏如何给微信公众号添加菜单栏微信的公众号菜单在哪里手机微信菜单在哪里微信添加工具栏

2024年8月18日 05:10

mysql怎么样(mysql社区版的稳定性与可靠性如何,是否有必要用oracle)

mysql怎么样(mysql社区版的稳定性与可靠性如何,是否有必要用oracle)

本文目录mysql社区版的稳定性与可靠性如何,是否有必要用oraclehdf5和mysql比较怎么样大数据处理用mysql速度怎么样mysql 怎么样mysql社区版的稳定性与可靠性如何,是否有必要用oraclemysql社区版 稳定性 可

2024年6月21日 08:20

lesson one(lessonone维生素产品有质量问吗)

lesson one(lessonone维生素产品有质量问吗)

其实lesson one的问题并不复杂,但是又很多的朋友都不太了解lessonone维生素产品有质量问吗,因此呢,今天小编就来为大家分享lesson one的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录less

2024年7月31日 14:01

bootstrap4 网站后台模板(如何利用bootstrap框架开发后台)

bootstrap4 网站后台模板(如何利用bootstrap框架开发后台)

本文目录如何利用bootstrap框架开发后台bootstrap可以写后台管理系统界面吗bootstrap 的模板实现后端功能怎么用bootstrap做一套网站Bootstrap后台tab形式界面框架怎么实现有什么比较好的基于bootstr

2024年5月8日 16:28

1688全屏海报代码生成器在线(阿里巴巴装修能不能用代码)

1688全屏海报代码生成器在线(阿里巴巴装修能不能用代码)

本文目录阿里巴巴装修能不能用代码淘宝首页全屏图片效果是怎么做出来的阿里巴巴全屏海报怎么用DW制作淘宝全屏海报怎么做阿里巴巴首页装修可以做全屏的吗阿里巴巴装修能不能用代码现在可以用代码装修了,用疯狂的美工阿里巴巴在线装修助手,一键生成代码安装

2024年7月2日 18:23

常用性能测试工具有哪些(常用的功能测试软件有那些)

常用性能测试工具有哪些(常用的功能测试软件有那些)

本文目录常用的功能测试软件有那些软件测试需要学习的主流测试工具有什么软件测试一般都用到哪些工具请教各位目前PC端与移动端主流的性能测试工具有哪些有哪些网页性能测试工具对电脑性能测试的软件都有哪些给我推荐个测试电脑性能的软件,鲁大师什么的就算

2024年5月4日 11:44

java代码加密混淆工具(哪个JAVA混淆器好用)

java代码加密混淆工具(哪个JAVA混淆器好用)

其实java代码加密混淆工具的问题并不复杂,但是又很多的朋友都不太了解哪个JAVA混淆器好用,因此呢,今天小编就来为大家分享java代码加密混淆工具的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录哪个JAVA混淆

2024年7月12日 06:05

微信视频制作小程序(微信剪辑软件叫什么)

微信视频制作小程序(微信剪辑软件叫什么)

本文目录微信剪辑软件叫什么微信上打视频的小程序叫什么做一款拍摄短视频和照片的微信小程序微信剪辑软件叫什么讲真-记忆 3元课链接一般情况下听音乐还是可以提高记忆力的,时间长了就会记住喜欢的歌词,慢慢也会记住自己想要的东西。只要多学习就会有好的

2024年5月17日 22:53

网络代理ip地址和端口(什么叫代理服务器的ip地址,什么叫服务器的端口.)

网络代理ip地址和端口(什么叫代理服务器的ip地址,什么叫服务器的端口.)

本文目录什么叫代理服务器的ip地址,什么叫服务器的端口.香港代理ip地址和端口代理的IP地址和端口有什么关系企业微信网络代理ip地址和端口怎样用代理服务器上网土耳其代理ip地址和端口代理ip地址怎么设置代理服务器ip地址和端口号是多少Win

2024年4月3日 06:01

观察者模式我的世界(我的世界怎么变换成旁观者模式)

观察者模式我的世界(我的世界怎么变换成旁观者模式)

本文目录我的世界怎么变换成旁观者模式mc手机版(网易)怎么开观察者模式我的世界中国版为什么我没办法开观察者模式我的世界电脑版怎么做观察者 (注:1.10.2是有的,我是看人家用观察者弄大炮和飞船)我的世界怎么变换成旁观者模式许多小伙伴不知道

2024年7月1日 05:31

goto官网(请高手帮忙鉴定一下该网站真伪,多谢了 http://www.gotoread.com)

goto官网(请高手帮忙鉴定一下该网站真伪,多谢了 http://www.gotoread.com)

大家好,今天小编来为大家解答以下的问题,关于goto官网,请高手帮忙鉴定一下该网站真伪,多谢了 http://www.gotoread.com这个很多人还不知道,现在让我们一起来看看吧!本文目录请高手帮忙鉴定一下该网站真伪,多谢了 http

2024年8月24日 00:00

句柄无效什么意思(地税申报上缴税款提示句柄无效是什么意思)

句柄无效什么意思(地税申报上缴税款提示句柄无效是什么意思)

本文目录地税申报上缴税款提示句柄无效是什么意思句柄无效是什么意思,从未遇到过这种情况电脑登录不起了啊????“句柄”,“句柄无效“是什么意思电脑出现句柄无效怎么办电脑突然关机后开机提示“句柄无效”是什么意思打印机显示句柄无效是什么情况地税申

2024年7月18日 21:52

c语言指针数组举例(谁发点C语言例子给我,关于数组和指针的)

c语言指针数组举例(谁发点C语言例子给我,关于数组和指针的)

本文目录谁发点C语言例子给我,关于数组和指针的C语言 指针数组c语言指针和数组谁发点C语言例子给我,关于数组和指针的下面是我收藏的关于指针的一个非常好的文档,讲的很深入,楼主要是感兴趣的话可以研究一下,要是有不懂得地方可以随时问我。。。第一

2024年7月3日 14:03

personality traits(personality traits是什么意思)

personality traits(personality traits是什么意思)

本文目录personality traits是什么意思personality traits有哪些personality traits是什么意思personality traits 个性特点人格特征Here are a few persona

2024年7月12日 06:08

cellspacing属性的作用(表格cellspacing属性)

cellspacing属性的作用(表格cellspacing属性)

本文目录表格cellspacing属性5、表格中的cellspacing属性是设置表格的 * 在table里cesspadding 和cellspacing是用来定义表格什么属性的都还有哪些常用到的属性表格cellspacing属性单元格(

2024年7月23日 22:16

button按钮属性(PYTHON3.7.2 button 修改属性)

button按钮属性(PYTHON3.7.2 button 修改属性)

大家好,button按钮属性相信很多的网友都不是很明白,包括PYTHON3.7.2 button 修改属性也是一样,不过没有关系,接下来就来为大家分享关于button按钮属性和PYTHON3.7.2 button 修改属性的一些知识点,大家

2024年8月9日 17:35

python单继承和多继承(Python中的面向对象(高级)之私有方法、多继承、多态)

python单继承和多继承(Python中的面向对象(高级)之私有方法、多继承、多态)

各位老铁们,大家好,今天由我来为大家分享python单继承和多继承,以及Python中的面向对象(高级)之私有方法、多继承、多态的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了

2024年9月28日 14:05

安卓手机怎么截屏(安卓手机怎么截屏,最简单的办法)

安卓手机怎么截屏(安卓手机怎么截屏,最简单的办法)

本文目录安卓手机怎么截屏,最简单的办法安卓手机如何截屏幕截图安卓手机截屏方法安卓手机截屏怎么操作安卓手机如何截图安卓手机截屏怎么截安卓手机怎么截图手机屏幕截图安卓手机怎么设置截屏手机截屏怎么操作怎么使用手机截屏功能安卓手机怎么截屏,最简单的

2024年5月9日 14:21

乱码文字生成下载(电脑为什么乱码怎么办)

乱码文字生成下载(电脑为什么乱码怎么办)

本文目录电脑为什么乱码怎么办有没有什么能把乱码转换成文字的软件在哪里找怎样把下载的txt乱码变成文字怎么把电脑里面文件乱码变成文字word文档出现乱码怎么解决电脑为什么乱码怎么办打开“控制面板”找到“区域和语言选项”。打开后可能是别的国家语

2024年3月4日 16:35

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索