网络编程代码(网络编程代码查询)

http://www.itjxue.com  2023-03-02 11:19  来源:未知  点击次数: 

怎么在centOS上编的代码

unix网络编程书中所有代码都基于它提供的头文件和库。所以学习时要用书中的代码做练习就必须配置好他需要的环境。

首先到 ht tp:/ /ishare.iask.sin a.c om.c n/f/1323 85 21.ht m l?sudaref=blog.cs dn.netretcode=0 下载源码包

第一步:在终端中进入upnv13e目录,然后执行代码:

./configure

第二步:这里有问题及解决方法

cd lib

make(如果报如下错误: inet_ntop.c:61: error: argument 'size' doesn't match prototype

/usr/include/arpa/inet.h:153: error: prototype declaration

inet_ntop.c第61行 size_t size -改成 socklen_t size)

第三步:这一步没有问题

cd ../libfree

make

第四步:

cd ../libgai

make

cd .. //回到unpv13e目录

然后拷贝生成的ku到系统库目录:

sudo cp libunp.a /usr/lib

sudo cp libunp.a /usr/lib32

第五步:修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便

vim lib/unp.h

sudo cp lib/unp.h /usr/include

sudo cp config.h /usr/include

以后编译代码的时候加上-lunp链接我们的库。(貌似只能用gcc,不能用g++)

PHP网络编程的代码怎么写?

PHP网络编程的代码怎么写?本篇文章给大家介绍的是关于PHP网络编程的代码,有兴趣的朋友可以看一下

//echo gethostbyname("");

$host = "111.13.100.92"; //设置基本信息

$port = 65530;

set_time_limit(0); //设置超时时间

//创建一个socket

$socket = socket_create(AF_INET,SOCK_STREAM,0) or die("不能建立socket链接!n");

//绑定Socket到端口

$result = socket_bind($socket,$host,$port) or die("不能绑定socket给定的端口n");

//开始监听

$result = socket_listen($socket,3) or die("建立socket连接失败n");

//接受连接请求,另一个Socket处理通讯

$socket_a = socket_accept($socket) or die("不能接受客户端socket请求n");

//获取客户端的输入请求

$input = socket_read($socket_a,4096) or die("读取客户端输入失败n");

//清空输入字符

$input = trim($input);

//处理客户端输入并处理结果

$output = strrev($input)."n";

socket_write($socket_a,$output,strlen($output)) or die("不能给客户端返回结果n");

//关闭socket

socket_close($socket_a);

socket_close($socket);

?

PHP网络编程的代码怎么写?这段php网络编程,希望大家一定要学会。

本篇《PHP网络编程的代码怎么写?原来这个代码就足够我们使用了》到这里就已经结束了,小编一直认为,某一个编程软件受欢迎是有一定原因的,首先吸引人的一定是其功能,环球网校的小编祝您PHP学习之路顺利,如果你还想知道更多php知识,可以点击本站的其他文章进行学习。

Java网络编程,客户端和服务端相互发送信息,可是我写的双方都没读到对方发送的信息,代码如下

这个地方有问题,第一,你必须写入newLine,要不会造成阻塞;第二,你必须先flush后才能读服务器;第三,你从控制台输入应该有个结束标志,要不你在while里面把bw关闭了,你还怎么循环

客户端这个地方重写一下,

while(true) {

temp=br.readLine();

if(temp.equals("over")){

break;

}

bw.write(temp);

bw.newLine();//如果没有,使用readLine则会造成莫名等待

bw.flush();

}

不一定改全了,你先试试这些改动,如有问题再找

如何用MFC实现网络编程

?????一.?客户端?

?????1.?创建一个Dialog?Based项目:CSockClient。?

?????2.?设计对话框?

?????去掉Ok和Cancle两个按钮,增加ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加ListBox控件IDC_LISTMSG和Edit控件IDC_EDITMSG,并按下表在ClassWizard中为CCSockClientDlg类添加变量。?

?????Control?ID?????Type?????????Member

?????IDC_EDITMSG????CEdit???????m_MSG

?????IDC_LISTMSG????ClistBox????m_MSGS

?????3.?CAsyncSocket类用DoCallBack函数处理MFC消息,当一个网络事件发生时,DoCallBack函数按网络事件类型:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分别调用OnReceive、OnSend、OnAccept、OnConnect函数。

?????由于MFC把这些事件处理函数定义为虚函数,所以要生成一个新的C++类,以重载这些函数,做法如下:以Public方式继承CAsyncSocket类,生成新类MySock;为MySock类添加虚函数OnReceive、OnConnect、OnSend。?

?????4.?在MySock.ccp中添加以下代码?

?????#include?"CSockClient.h"

?????#include?"CSockClientDlg.h"

?????5.?在MySock.h中添加以下代码?

?????public:

?????BOOL?m_bConnected;????//是否连接

?????UINT?m_nLength;????//消息长度

?????char?m_szBuffer[4096];?//消息缓冲区

?????6.?在MySock.ccp中重载各函数?

?????MySock::MySock()

?????{

?????????m_nLength=0;

?????????memset(m_szBuffer,0,sizeof(m_szBuffer));

?????????m_bConnected=FALSE;

?????}

?????MySock::~MySock()

?????{

?????????//关闭套接字

?????if(m_hSocket!=INVALID_SOCKET)

?????Close();

?????}

?????void?MySock::OnReceive(int?nErrorCode)?

?????{

?????????m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);

?????????//下面两行代码用来获取对话框指针

?????CCSockClientApp*?pApp=(CCSockClientApp*)AfxGetApp();

?????????CCSockClientDlg*?pDlg=(CCSockClientDlg*)pApp-?m_pMainWnd;

?????????pDlg-?m_MSGS.InsertString(0,m_szBuffer);

?????????memset(m_szBuffer,0,sizeof(m_szBuffer));

?????????CAsyncSocket::OnReceive(nErrorCode);

?????}

?????void?MySock::OnSend(int?nErrorCode)?

?????{

?????????Send(m_szBuffer,m_nLength,0);

?????????m_nLength=0;

?????????memset(m_szBuffer,0,sizeof(m_szBuffer));

?????????//继续提请一个“读”的网络事件,接收Server消息

?????AsyncSelect(FD_READ);

?????????CAsyncSocket::OnSend(nErrorCode);

?????}

?????void?MySock::OnConnect(int?nErrorCode)?

?????{

?????????if?(nErrorCode==0)

?????????{

?????m_bConnected=TRUE;

?????CCSockClientApp*?pApp=(CCSockClientApp*)AfxGetApp();

?????CCSockClientDlg*?pDlg=(CCSockClientDlg*)pApp-?m_pMainWnd;

?????memcpy(m_szBuffer,"Connected?to?",13);

?????strncat(m_szBuffer,pDlg-?m_szServerAdr,

?????sizeof(pDlg-?m_szServerAdr));

?????pDlg-?m_MSGS.InsertString(0,m_szBuffer);

?????AsyncSelect(FD_READ);?////提请一个“读”的网络事件,准备接收

?????????}

?????????CAsyncSocket::OnConnect(nErrorCode);

?????}

?????7.?新建对话框IDD_Addr,用来输入IP地址和Port;生成新类CAddrDlg。增加两个Edit控件:IDC_Addr、IDC_Port按下表在ClassWizard中为CAddrDlg类添加变量。?

?????Control?ID????Type????Member

?????IDC_Addr????CString????m_Addr

?????IDC_Port????Int????????m_Port

?????8.?在CSockClientDlg.ccp中添加代码:?

?????#include?"AddrDlg.h"

?????protected:

?????????int?TryCount;

?????????MySock?m_clientSocket;

?????????UINT?m_szPort;

?????public:

?????????char?m_szServerAdr[256];????

?????9.?双击IDD_CSOCKCLIENT_DIALOG对话框中的“连接”按钮,添加以下代码:?

?????void?CCSockClientDlg::OnConnect()?

?????{

?????????m_clientSocket.ShutDown(2);

?????????m_clientSocket.m_hSocket=INVALID_SOCKET;

?????????m_clientSocket.m_bConnected=FALSE;

?????????CAddrDlg?m_Dlg;

?????????//默认端口1088

?????m_Dlg.m_Port=1088;

?????????if?(m_Dlg.DoModal()==IDOK??!m_Dlg.m_Addr.IsEmpty())

?????????{

?????memcpy(m_szServerAdr,m_Dlg.m_Addr,sizeof(m_szServerAdr));

?????m_szPort=m_Dlg.m_Port;

?????//建立计时器,每1秒尝试连接一次,直到连上或TryCount10

?????SetTimer(1,1000,NULL);

?????TryCount=0;

?????????}

?????}

?????10.?添加Windows消息WM_TIMER响应函数OnTimer?

?????void?CCSockClientDlg::OnTimer(UINT?nIDEvent)?

?????{

?????????if?(m_clientSocket.m_hSocket==INVALID_SOCKET)

?????????{

?????BOOL?bFlag=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);

?????if(!bFlag)

?????{

?????????AfxMessageBox("Socket?Error!");

?????????m_clientSocket.Close();

?????????PostQuitMessage(0);

?????????return;

?????}

?????????}

?????????m_clientSocket.Connect(m_szServerAdr,m_szPort);

?????????TryCount++;

?????????if?(TryCount?=10?||?m_clientSocket.m_bConnected)

?????????{????

?????KillTimer(1);

?????if?(TryCount?=10)

?????????AfxMessageBox("Connect?Failed!");

?????return;

?????????}

?????????CDialog::OnTimer(nIDEvent);

?????}

?????11.?双击IDD_CSOCKCLIENT_DIALOG对话框中的“发送”按钮,添加以下代码:?

?????void?CCSockClientDlg::OnSend()?

?????{

?????????if?(m_clientSocket.m_bConnected)

?????????{

?????m_clientSocket.m_nLength=m_MSG.GetWindowText

?????(m_clientSocket.m_szBuffer,?sizeof(m_clientSocket.m_szBuffer));

?????m_clientSocket.AsyncSelect(FD_WRITE);

?????m_MSG.SetWindowText("");

?????????}

?????}

?????12.?双击IDD_CSOCKCLIENT_DIALOG对话框中的“关闭”按钮,添加以下代码:?

?????void?CCSockClientDlg::OnExit()?

?????{

?????????//关闭Socket

?????m_clientSocket.ShutDown(2);

?????????//关闭对话框

?????EndDialog(0);????

?????}

?????12.运行此项目,连接时输入主机名或IP均可,CAsyncSocket类会自动处理。

?????二.?服务端

?????Server端的编程与Client端的类似,下面主要介绍他的Listen及Accept函数。

?????1.?建立一个CNewSocket类,重载CAsyncSocket类的OnReceive、OnSend函数,如何进行信息的显示和发送可以参考Client程序。本例中采用将收到信息原封不动发回的方法来实现Echo功能,代码如下:

?????CNewSocket::OnReceive(int?nErrorCOde)

?????{

?????????m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);

?????????//?直接转发消息

?????AsyncSelect(FD_WRITE);

?????}

?????CNewSocket::OnSend(int?nErrorCode)

?????{

?????????Send(m_szBuffer,m_nLength,0);

?????}

?????2.?建立一个CMyServerSocket类,重载CAsyncSocket类的OnAccept函数代码如下

?????在MyServerSocket.h中声明变量

?????public::

?????CNewSocket*?m_pSocket;

?????void?CMyServerSocket::OnAccept(int?nErrorCode)

?????{

?????????//侦听到连接请求,调用Accept函数

?????????CNewSocket*?pSocket?=?new?CNewSocket();

?????????if?(Accept(*pSocket))

?????????{

?????pSocket-?AsyncSelect(FD_READ);

?????m_pSocket=pSocket;

?????????}

?????????else

?????delete?pSocket;

?????}

?????3.?为对话框添加一个“侦听”按钮,添加如下代码:

?????在CsockServerDlg.ccp中声明变量

?????public:

?????????CMyServerSocket?m_srvrSocket;

?????void?CCSockServerDlg::OnListen()

?????{

?????????if?(m_srvrSocket.m_hSocket==INVALID_SOCKET)

?????????{

?????BOOL?bFlag=m_srvrSocket.Create

?????(UserPort,SOCK_STREAM,FD_ACCEPT);

?????if?(!bFlag)

?????{

?????????AfxMessageBox(“Socket?Error!”);

?????????M_srvrSocket.Close();

?????????PostQuitMessage(0);

?????????Return;

?????}

?????????}

?????//“侦听”成功,等待连接请求

?????if?(!m_srvrSocket。Listen(1))

?????{

?????int?nErrorCode?=?m_srvrSocket.GetLastError();

?????if?(nError!=WSAEWOULDBLOCK)

?????{

?????????AfxMessageBox(“Socket?Error!”);

?????????M_srvrSocket.Close();

(责任编辑:IT教学网)

更多

推荐淘宝营销文章