socket怎么连接服务器(服务器连接socket异常)

      最后更新:2023-08-18 00:11

      如何在客户端上建立一个Socket与服务器端连接,包括连接的函数?

      进入mysql,创建一个新用户xuys: 格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by "xuys1234";查看结果,执行:use mysql;select host,user,password from user;可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用主机名,将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时设为%。update user set host = '%' where user = 'xuys';2、 ./mysqladmin -uroot -p21century reload./mysqladmin -uroot -p21century shutdown3、./mysqld_safe --user-root &记住:对授权表的任何修改都需要重新reload,即执行第3步。如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:use mysql;insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');update db set host = '%' where user = 'xuys'; 重复执行上面的第2、3步。
      【zhuokai】:Socket.RemoteAddress Socket.RemoteHost服务器端可以给连接上的客户端发送测试数据,一定时间内回收到客户端反应的可认为在线.【zhuokai】:请参考: http://www.programfan.com/article/showarticle.asp?id=2289 【ylsl917】:我用的API,不是用的控件,我贴出代码来,麻烦大家给我修改一下吧procedure TForm1.OnWork1Accept(var message: TMessage);VarClient_Addr: TSockAddr;ClientLen: Integer;s:string;beginFillChar(Client_Addr,Sizeof(Client_Addr),0);ClientLen := Sizeof(Client_Addr);Conn_Socket := Accept(Server_Socket,@Client_Addr,@ClientLen);{ 能不能在这里判断出建立的这个Comm_Socket 是哪台机器建立的,其IP是多少?}//读取/关闭 事件WSAAsyncSelect(Conn_Socket, Form1.Handle, WM_WORK1_READ, FD_READ or FD_CLOSE);end;【ylsl917】:解决了,只要 Client_Addr.sin_addr.S_addr 转换成字符串IP就行了 function IPIntToStr(I:Integer):String;varsinaddr:in_addr;beginsinaddr.S_addr:=i;result:=String(inet_ntoa(sinaddr));end;【ylsl917】:还有谁上来说说怎么做到长连接!!!【wj19781215】:自己定义活动包探测客户端是否在线,不要用windows的全局活动包检测,至于长连接就是tcp哦。【ylsl917】:谢谢楼上的 还有一个问题啊我用API实现socket 能不能让程序既是服务器端,又是客户端【zhuokai】: 我用API实现socket 能不能让程序既是服务器端,又是客户端意思是在同一个程序里客户端连接服务器?可以的,多个线程【wj19781215】:用getsockname和getpeername【abcdefgdeng】:在socketserver的onAccept事件中用Socket.RemoteAddress读取【ylsl917】: 我用API实现socket 能不能让程序既是服务器端,又是客户端意思是在同一个程序里客户端连接服务器?可以的,多个线程
      客户端源码(uClientMain.pas): unit uClientMain;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ScktComp, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Buttons;constSocketHost = '172.16.1.6'; //服务器端地址typeTfrmClientMain = class(TForm)ControlBar1: TControlBar;ToolBar1: TToolBar;tbConnected: TToolButton;tbSend: TToolButton;tbClose: TToolButton;tbDisconnected: TToolButton;ClientSocket: TClientSocket;Edit1: TEdit;Memo1: TMemo;StatusBar: TStatusBar;btnSend: TBitBtn;procedure tbConnectedClick(Sender: TObject);procedure tbDisconnectedClick(Sender: TObject);procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);procedure tbSendClick(Sender: TObject);procedure tbCloseClick(Sender: TObject);procedure FormShow(Sender: TObject);procedure ClientSocketConnect(Sender: TObject;Socket: TCustomWinSocket);procedure ClientSocketConnecting(Sender: TObject;Socket: TCustomWinSocket);procedure ClientSocketDisconnect(Sender: TObject;Socket: TCustomWinSocket);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;ErrorEvent: TErrorEvent; var ErrorCode: Integer);private{ Private declarations }public{ Public declarations } end;
      ClientSocket组件为客户端组件。它是通信的请求方,也就是说,它是主动地与服务器端建立连接。 ServerSocket组件为服务器端组件。它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复。ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的通信。因此,一个服务器端可以为多个客户端服务。设计思路本例包括一个服务器端程序和一个客户端程序。客户端程序可以放到多个计算机上运行,同时与服务器端进行连接通信。本例的重点,一是演示客户端与服务器端如何通信;二是当有多个客户端同时连接到服务器端时,服务器端如何识别每个客户端,并对请求给出相应的回复。为了保证一个客户端断开连接时不影响其它客户端与服务器端的通信,同时保证服务器端能够正确回复客户端的请求,在本例中声明了一个记录类型:typeclient_record=recordCHandle: integer; //客户端套接字句柄CSocket:TCustomWinSocket; //客户端套接字CName:string; //客户端计算机名称CAddress:string; //客户端计算机IP地址CUsed: boolean; //客户端联机标志end;利用这个记录类型数据保存客户端的信息,同时保存当前客户端的连接状态。其中,CHandle保存客户端套接字句柄,以便准确定位每个与服务器端保持连接的客户端;Csocket保存客户端套接字,通过它可以对客户端进行回复。Cused记录当前客户端是否与服务器端保持连接。下面对组件ServerSocket和ClientSocket的属性设置简单说明。ServerSocket的属性:· Port,是通信的端口,必须设置。在本例中设置为1025;· ServerTypt,服务器端读写信息类型,设置为stNonBlocking表示异步读写信息,本例中采用这种方式。· ThreadCacheSize,客户端的最大连接数,就是服务器端最多允许多少客户端同时连接。本例采用默认值10。其它属性采用默认设置即可。ClientSocket的属性:· Port,是通信的端口,必须与服务器端的设置相同。在本例中设置为1025;· ClientType,客户端读写信息类型,应该与服务器端的设置相同,为stNonBlocking表示异步读写信息。· Host,客户端要连接的服务器的IP地址。必须设置,当然也可以在代码中动态设置。 其它属性采用默认设置即可。
      如何在客户端上建立一个Socket与服务器端连接,包括连接的函数?

      自己写了一个Android的APP,想用socket连接服务器,服务器用什么写?需要用什么软件吗?

      不是很复杂。具体思路: 1.在服务器端写一个程序,这程序进行读取数据库中你想要的数据,然后再通过socket服务端发送给客户端。2.写个socket客户端 。 android的不知道是不是这样!
      最近我在在写一个APP,用到了socket,在自己电脑上搭建的服务器,具体过程:用eclipse写Java代码,创建一个serversocket,用来监听客户端的请求;客户端在发送数据前,首先创建一个Socket,然后直接请求服务器即可。
      自己写了一个Android的APP,想用socket连接服务器,服务器用什么写?需要用什么软件吗?

      C# 使用Socket如何进行连接

      自己的IP地址 如果是直接入网的话(无网关 不是学校公司这种局域网入网的) 就是你上百度贴吧匿名发帖的那个IP 其他方法也有 但是这个最直观 还有 SOCKET不是一个端口性质的东西 而是更像一个数据包这种样子的东西 这点很容易混淆比如说 如果是服务器监听客户端的话 :服务器不需要知道客户端的IP 只需要打开自己这边的一个端口(PORT) 然后建立一个SOCKET实例绑定到这个端口 然后就成功的监听了 运行后所有发送到这个端口的BYTE流都可以通过SOCKET.BEGINACCEPT方法来接收而客户端却不但要知道服务器的IP 还要知道服务器用来监听的那个端口(PORT) 这样就形成了一个服务器ENDPOINT(IP+PORT) 然后自己生成一个SOCKET实例 再连接那个服务器ENDPOINT 再通过这个SOCKET实例传输自己的BYTE流编IM还是很复杂的 尤其是线程和异步调用的问题 SOCKET只是第一步 和网页的那种伪IM完全不一样的还有什么问题的话可以HI我 不过我也是菜鸟 只能尽力而为了 另外,站长团上有产品团购,便宜有保证
      利用C#进行Socket通信编程之一 http://blog.csdn.net/huangxinfeng/article/details/4959242利用C#进行Socket通信编程之二http://blog.csdn.net/huangxinfeng/article/details/4967629
      1.利用Tcp协议编程 1)服务器端:a)建立TCP监听器TcpListener对象。TcpListener tl=new TcpListener(端口号);b)启动监听器tl.Start();c)用监听器获取连接进来的套接字(Socket)Socket s=myList.AcceptSocket();d)通过Socket的Receive方法获取客户端发送的数据byte [] result=new byte[1024];int k=s.Receive(result);e)通过Socket的Send方法向客户端发送数据byte[] st=System.Text.Encoding.Default.GetBytes(“text”);s.Send(st);f)在通讯结束后,需要释放资源结束监听s.Close();tl.Stop();2)客户端:a)建立TCP客户端TcpClient对象。TcpClient tcpclnt = new TcpClient();b)连接服务器tcpclnt.Connect(IP地址字符串,端口号);c)获得客户端网络传输 流Stream stm =tcpclnt.GetStream();d)通过Stream的Write方法向服务器端发送的数据e)通过Stream的Read方法读取服务器段发来的数据f)在通讯结束后,需要释放资源,结束和服务器的连接tcpclnt.Close();2.利用UDP协议编程a)建立UDP客户端UdpClient对象。UdpClient uc=new UdpClient(端口号);b)连接对方远程主机uc.Connect(IP地址,对方远程主机的端口号);c)通过uc的Receive方法获取远程主机发送来的数据IPEndPoint ip=new IPEndPoint(IPAddress.Parse(IP字符串),端口号);byte[] b=uc.Receive(ref ip);e)通过uc的Send方法向远程主机发送数据byte[] st=System.Text.Encoding.Default.GetBytes(“text”);uc.Send(st);f)在通讯结束后,需要释放资源 uc.Close();
      C# 使用Socket如何进行连接

      如何利用socket进行HTTP访问

      一、如何建立与服务器之间的连接 HTTP基本TCP,所以我们需要与服务器建立连接,然后才能发送数据。建立连接参考如下函数socket_open:/**打开Socket,返回socketId,-1表示失败*/int socket_open(int IP,int Port,int type){SOCKET socketId;struct sockaddr_in serv_addr;int status;socketId=socket(AF_INET,SOCK_STREAM,0);if((int)socketId<0){printf("[ERROR]Create a socket failed!/n");return -1;}memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr = ntohl(IP);serv_addr.sin_port = htons((USHORT)Port);status=connect(socketId,(struct sockaddr*)&serv_addr,sizeof(serv_addr));if(status!=0){printf("[ERROR]Connecting failed!/n");closesocket(socketId);return -1;}return socketId;}调用方式如下:int socketId=socket_open(0xC0A80001,808,0); //0xC0A80001是192.168.0.1的十六进制写法。二、如何发送请求发送数据要根据HTTP协议的要求附加协议头:static const char* protocolHead="GEThttp://www.xxx.com/index.htmlHTTP/1.1/n""Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*/n""Accept-Language: zh-cn/n""User-Agent:iPanelBrowser/2.0/n""Host:www.xxx.com:80/n""Connection: close/n/n"这里使用GET来获取指定URL的指定文档。建立连接后使用send将这些数据发送出去:send(socketId, protocolHead,strlen(protocolHead),0);发送完成HTTP请求后就等待接收数据。三、如何接收数据这里采用select循环查询的方式来判断有无数据到来:struct timeval tm = {0,7};fd_set fds_r;int status;char recvBuf[4096]={‘/0’};FD_ZERO(&fds_r);FD_SET(socketId,&fds_r);status=select(socketId+ 1, &fds_r, 0, 0, &tm); //socketId在这里是最大的fdif(status > 0 && FD_ISSET(socketId, &fds_r)){printf("Socket is readable...fd=[%d]/n",socketId);recv(socketId,recvBuf,4096,0);} 这样数据包就保存到缓冲区中了。
      如何利用socket进行HTTP访问

      如何使用socket进行客户端和服务器端的通信

      下载完成后,软件是一个单独的运行程序,可以直接打开软件。 3软件的界面很简单,在左侧有tcp和udp的客户端或服务端的快捷按钮,上方有【创建】【删除】【退出】等选项按钮。4我们先来建立TCP的测试服务端。点击【TCP Server】再点击【创建】。选择一个监听端口,这里我们使用6001作为服务端的监听端口。建立完成后,服务端会自动启动,软件会显示【启动监听】的状态。我们可以检测一下本机的6001端口是否已经打开。在DOS窗口中输入命令【netstat -a】,可以在列表中看到本机的6001端口的状态为listening的状态,表示本机的6001端口正处于监听的状态。在DOS窗口中输入命令【telnet 192.168.0.140 6001】来登录本地的6001端口。点击回车键,就可以成功登录6001端口。在测试软件中就可以看到状态是已连接的状态,同时也可以看到对方的ip就是本地ip。再来测试通信情况,在DOS窗口中输入a、b、c,在软件的接收窗口就可以看到收到的数据了。在软件的发送窗口中输入1234567890,点击发送后,在DOS窗口中就可以看到软件发送过来的数据了。测试完成后,在软件中点击【停止监听】,同时在DOS窗口中可以看到【失去了跟主机的连接】,表示测试连接已经断开。再来创建TCP的客户端,点击【TCP Client】再点击【创建】。会弹出【创建socket客户端】窗口,输入对方的ip和对方的端口,点击确认。 tcp的客户端已经建立好,如果对方的端口监听正常的话,点击【连接】就可以连接到对方的端口和对方进行测试通信了。
      如何使用socket进行客户端和服务器端的通信

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类