网络编程代码(网络编程代码查询)
怎么在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();