socket怎么连接服务器(python socket连接远程服务器)

      最后更新:2022-11-09 12:52:38 手机定位技术交流文章

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

      在服务器端设置一个标志变量,如int flag = 0,当有客户端连接上了,就检查那个标志变量是否为0,如果是的话就连接,然后将这个标志设为1。如果为1的话就拒绝连接。我不知道你是用什么语言编写的,所以具体怎么去拒绝连接就自己多想想吧··· 在java里面很容易实现,下面是我在java中实现的服务器端代码,希望对你有帮助。。。package ob;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {Socket socket;boolean flag = true;public void createServer() {try {ServerSocket serverSocket = new ServerSocket(9090);while (true) {socket = serverSocket.accept();if (flag) {System.out.println("有用户连上···");System.out.println("ip:"+socket.getRemoteSocketAddress().toString()+" port:"+socket.getPort());flag = false;}else{System.out.println("有用户连上···");socket.close();System.out.println("关闭用户连接···");}}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new Server().createServer();}}
      如何在客户端上建立一个Socket与服务器端连接,包括连接的函数?

      如何在客户端上建立一个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与服务器端连接,包括连接的函数?

      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是怎么通信的

      //上传文件 Socket socket = new Socket("192.168.0.240", 7878);OutputStream outputStream = socket.getOutputStream();String head = "Content-Length=" + audioFile.length()+ ";filename=" + audioFile.getName()+ ";sourceid=rn";outputStream.write(head.getBytes());PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());String response = StreaTool.readLine(inStream);String[] items = response.split(";");String position = items[1].substring(items[1].indexOf("=") + 1);RandomAccessFile fileOutStream = new RandomAccessFile(audioFile, "r");fileOutStream.seek(Integer.valueOf(position));byte[] buffer = new byte[1024];int len = -1;while ((len = fileOutStream.read(buffer)) != -1){outputStream.write(buffer, 0, len);}fileOutStream.close();outputStream.close();socket.close();audioFile.delete(); } cat
      服务器与服务器用socket是怎么通信的

      socket客户端如何连接服务器端

      import java.net.*; import java.lang.*;import java.io.*;public class MySocketServer{public static void main(String args[]) //throws IOException{try{ServerSocket myServer = new ServerSocket(8018);System.out.println("正在监听端口:"+myServer.getLocalPort());Socket myClient = null;boolean flag = true;String InputMessage = null;int c;while(flag){myClient = myServer.accept();//接收客户端的信息,如果不是Stop就继续监听,加个if判断DataInputStream dataIn = new DataInputStream(myClient.getInputStream());//DataInputStream dataIn = new DataInputStream(new BufferedInputStream(myClient.getInputStream()));OutputStream dataOut = myClient.getOutputStream();while( (InputMessage = dataIn.readLine()) != null ){if( InputMessage.equals("stop")){flag = false;break;}else{System.out.println("从客户端接收到的信息是:"+InputMessage);//输入:读取至 末尾-1结束,遇到回车'n'结束:while((c=System.in.read())!= -1){dataOut.write((byte)c);if(c== 'n'){dataOut.flush();break;}}}}dataIn.close();dataOut.close();myClient.close();}myServer.close();}catch(Exception e){System.out.println(e.getMessage());}}}客户端:import java.io.*;import java.lang.*;import java.net.*;public class MySocketClient{public static void main(String args[]){try{Socket myClient = new Socket("192.168.1.25",8018);DataInputStream dataIn = new DataInputStream(myClient.getInputStream());OutputStream dataOut = myClient.getOutputStream();boolean flag = true;int c;String serverResponse = null ;while(flag){while( (c=System.in.read())!= -1 ){dataOut.write((byte)c);if(c=='n'){dataOut.flush();serverResponse = dataIn.readLine();System.out.println("服务器的返回信息是:"+serverResponse);}}}dataIn.close();dataOut.close();myClient.close();}catch(Exception e){System.out.println("Exception :"+e.getMessage());}} }
      socket客户端如何连接服务器端

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/44211.html

          热门文章

          文章分类