socket请求怎么写

来源:趣味经验馆 4.63K
1.socket能接收所有客户端的请求怎么写(socket.Accept()的问题)

//启动一个线程监听

socket请求怎么写

System.Threading.Thread thread = new Thread(new ThreadStart(BeginListen));

thread.Start();

public void BeginListen()

{

//循环监听

while(true)

{

Socket sckClient = s.Accept();

}

}

2.socket怎么样实现

Socket就是套接字它是网络编程中最常用遇到概念和工具在TCP/IP网络中传送和接收数据就会经常使用到Socket由于使用Socket能够在网络上处理复杂数据所以在各种网络应用中涉及到数据传送和接收般都会使用Socket可见要掌握网络编程精通Socket是非常重要由于Socket本身复杂性决定了掌握它是比较困难Visual C#是微软公司推荐开发.Net平台应用主要语言随着.Net深入人心目前很多有远见公司都把以前软件Software转向了.Net平台掌握网络编程始终是学习种开发语言重点这点对于Visual C#也同样如此Visual C#实现网络功能.

帮助网

3.如何编写socket套接字

Socket套接字相当于网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据。其定义类似于文件句柄的定义。

如果编写的是服务程序,那么先调用socket()创建一个套接字,调用bind()绑定IP地址和端口,然后启动一个死循环,循环中调用accept()接受连接。对于每个接受的连接,可以启动多线程方式进行处理,在线程中调用send()、recv()发送和接收数据。

如果编写的是客户端程序,则先调用socket()创建一个套接字,然后调用connect()连接服务器,之后就是调用send()、recv()发送和接收数据了。

服务端程序编写:

1、调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上。

2、调用accept(),监听连接请求,接收连接,返回通信套接字。

3、调用Socket类的getOutStream()和getInputStream获取输出和输入流,开始网络数据的发送和接收。

4、关闭通信套接字.Socket.close()。

客户端程序编写:

1、调用Socket()创建一个流套接字,并连接到服务器端。

2、调用Socket类的getOutputStream()和fetInputStream()获取输出流和输入流,开始网络数据的发送和接收。

3、关闭通信套接字.Socket.close()。

4.怎样用 socket 写一段程序 要求:可以实现在一台机器上操作,然后另

1、首先要有服务器程序和客户端程序的概念,客户端程序连接到服务器程序监听的端口,请求数据通讯

2、自己拟定一些通讯协议

比如,一个命令包包括(包头(2字节或4字节) 包内容(若干字节))

用2字节的包头表示整个包的长度,保证包的完整性

比如包都得2字节能表示的长度最大是65536字节,假设包头为short类型 值为 10

表示这个指令整个包长度是12字节,为完整包

那么第三个字节可以作为主协议使用,第四个字节可以作为子协议,后面8个字节可以作为这个主协议和子协议带入的参数

只是举一个简单的例子

5.如何编写一个利用Socket通信的程序

设计思路 本例包括一个服务器端程序和一个客户端程序。

客户端程序可以放到多个计算机上运行,同时与服务器端进行连接通信。 本例的重点,一是演示客户端与服务器端如何通信;二是当有多个客户端同时连接到服务器端时,服务器端如何识别每个客户端,并对请求给出相应的回复。

为了保证一个客户端断开连接时不影响其它客户端与服务器端的通信,同时保证服务器端能够正确回复客户端的请求,在本例中声明了一个记录类型:type client_record=record CHandle: 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地址。

必须设置,当然也可以在代码中动态设置。 其它属性采用默认设置即可。

程序源代码: · 服务器端源码(uServerMain.pas):unit uServerMain;interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, ToolWin, ComCtrls, ExtCtrls, StdCtrls, Buttons; const CMax=10; //客户端最大连接数 type client_record=record CHandle: integer; //客户端套接字句柄 CSocket:TCustomWinSocket; //客户端套接字 CName:string; //客户端计算机名称 CAddress:string; //客户端计算机IP地址 CUsed: boolean; //客户端联机标志 end; type TfrmServerMain = class(TForm) ServerSocket: TServerSocket; ControlBar1: TControlBar; ToolBar1: TToolBar; tbConnect: TToolButton; tbClose: TToolButton; tbDisconnected: TToolButton; Edit1: TEdit; Memo1: TMemo; StatusBar: TStatusBar; procedure tbConnectClick(Sender: TObject); procedure tbDisconnectedClick(Sender: TObject); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure ServerSocketListen(Sender: TObject;Socket: TCustomWinSocket); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure tbCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ServerSocketGetSocket(Sender: TObject; Socket: Integer; var ClientSocket: ); procedure (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); private { Private declarations } public { Public declarations } session: array[0..CMax] of client_record; //客户端连接数组 Sessions: integer; //客户端连接数 end; var frmServerMain: TfrmServerMain; implementation {$R *.DFM} //打开套接字连接,并使套接字进入监听状态 procedure TfrmServerMain.tbConnectClick(Sender: TObject); begin ServerSocket.Open ; end; //关闭套接字连接,不再监听客户端的请求 procedure TfrmServerMain.tbDisconnectedClick(Sender: TObject); begin ServerSocket.Close; StatusBar.Panels[0].Text :='服务器套接字连接已经关闭,无法接受客户端的连接请求.'; end; //从客户端读取信息 procedure TfrmServerMain.(Sender: TObject;Socket: TCustomWinSocket); var i:integer; begin //将从客户端读取的信息添加到Memo1中 Memo1.Lines.Add(Socket.ReceiveText); for i:=0 to sessions do begin //取得匹配的客户端 if session[i].CHandle = Socket.SocketHandle then begin session[i].CSocket.SendText('回复客户端'+session[i].CAddress+' ==> '+Edit1.Text); end; end; end; //服务器端套接字进入监听状态,以便监听客户端的连接 procedure TfrmServerMain.ServerSocketListen(Sender: TObject;Socket: TCustomWinSocket); begin StatusBar.Panels[0].Text :='等待客户端连接。'; end; //当客户端连接到服务器端以后 procedure TfrmServerMain。

6.编写一个TCP Socket程序

我看盗的时候只有21个小时了,不知道是不是还能赶的上拿分!下边给出DELPHI的源代码!--------client---------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; IdTCPClient1: TIdTCPClient; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginif idtcpclient1.Connected then idtcpclient1.Disconnect ;tryidtcpclient1.Host :=edit1.Text ;idtcpclient1.Port :=strtoint(edit2.Text );idtcpclient1.Connect;exceptshowmessage('连接失败');end;idtcpclient1.WriteLn(edit3.Text );edit3.Text :=idtcpclient1.ReadLn; end;procedure TForm1.FormDestroy(Sender: TObject);beginif idtcpclient1.Connected then idtcpclient1.Disconnect ;end;end.----------------------------------------------------------server--------------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer;type TForm1 = class(TForm) IdTCPServer1: TIdTCPServer; Button1: TButton; Edit1: TEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure IdTCPServer1Execute(AThread: TIdPeerThread); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1 : TForm1; i:integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin if IdTCPServer1.Active then IdTCPServer1.Active := false; try IdTCPServer1.DefaultPort := strtoint(Edit1.Text); IdTCPServer1.Active := true; except showmessage('启动失败'); end;end;procedure TForm1.FormDestroy(Sender: TObject);begin if IdTCPServer1.Active then IdTCPServer1.Active := false;end;procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);var s : string;begin Memo1.Lines.Add(athread.Connection.ReadLn(s) ); ATHREAD.Connection.WriteLn(inttostr(i)); i:=i+1;end;procedure TForm1.FormCreate(Sender: TObject);begin i:=1;end;end.----------------------------------------------winXP +delphi7编译通过。

7.安卓开发socket开发简单例子 怎么写

package scut;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Sock {

/**

* 服务器端

*

* @author Administrator

*

*/

// 程序入口

public static void main(String args[]) {

try {

// 建立一个ServletSocket ,监听对应的端口,用于监听客户端的连接请求

ServerSocket serverSocket = new ServerSocket(40004);

while (true) { // 循环不断接收客户端的请求

System.out.println("等待客户端请求。.");

Socket socket = serverSocket.accept();

// 等待接收

System.out.println("收到请求,服务器建立连接。");

// 返回数据

OutputStream os = socket.getOutputStream();

String msg = "服务器已连接成功。";

os.write(msg.getBytes("utf-8"));

os.close();

socket.close();

}

}

catch (Exception e) {

e.printStackTrace();

}

}

}

8.socket编程怎么写一个客户端和两个服务端

网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。

Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。下面用Socket实现一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收。

【服务器端】#include "stdafx.h"#include #include #include #define SERVER_PORT 5208 //侦听端口 void main() { WORD wVersionRequested; WSADATA wsaData; int ret, nLeft, length; SOCKET sListen, sServer; //侦听套接字,连接套接字 struct sockaddr_in saServer, saClient; //地址信息 char *ptr;//用于遍历信息的指针 //WinSock初始化 wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本 ret=WSAStartup(wVersionRequested, &wsaData); if(ret!=0) { printf("WSAStartup() failed!n"); return; }//创建Socket,使用TCP协议 sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sListen == INVALID_SOCKET) { WSACleanup(); printf("socket() faild!n"); return; }//构建本地地址信息 saServer.sin_family = AF_INET; //地址家族 saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序 saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址//绑定 ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer)); if (ret == SOCKET_ERROR) { printf("bind() faild! code:%dn", WSAGetLastError()); closesocket(sListen); //关闭套接字 WSACleanup(); return; }//侦听连接请求 ret = listen(sListen, 5); if (ret == SOCKET_ERROR) { printf("listen() faild! code:%dn", WSAGetLastError()); closesocket(sListen); //关闭套接字 return; } printf("Waiting for client connecting!n"); printf("Tips: Ctrl+c to quit!n");//阻塞等待接受客户端连接 while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。{ length = sizeof(saClient); sServer = accept(sListen, (struct sockaddr *)&saClient, &length); if (sServer == INVALID_SOCKET) { printf("accept() faild! code:%dn", WSAGetLastError()); closesocket(sListen); //关闭套接字 WSACleanup(); return; } char receiveMessage[5000]; nLeft = sizeof(receiveMessage); ptr = (char *)&receiveMessage; while(nLeft>0) {//接收数据 ret = recv(sServer, ptr, 5000, 0); if (ret == SOCKET_ERROR) { printf("recv() failed!n"); return; } if (ret == 0) //客户端已经关闭连接 { printf("Client has closed the connectionn"); break; } nLeft -= ret; ptr += ret; } printf("receive message:%sn", receiveMessage);//打印我们接收到的消息。

}// closesocket(sListen);// closesocket(sServer);// WSACleanup(); } 【客户端】#include "stdafx.h"#include #include #include #define SERVER_PORT 5208 //侦听端口 void main() { WORD wVersionRequested; WSADATA wsaData; int ret; SOCKET sClient; //连接套接字 struct sockaddr_in saServer; //地址信息 char *ptr; BOOL fSuccess = TRUE;//WinSock初始化 wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本 ret = WSAStartup(wVersionRequested, &wsaData); if(ret!=0) { printf("WSAStartup() failed!n"); return; }//确认WinSock DLL支持版本2.2 if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2) { WSACleanup(); printf("Invalid WinSock version!n"); return; }//创建Socket,使用TCP协议 sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sClient == INVALID_SOCKET) { WSACleanup(); printf("socket() failed!n"); return; }//构建服务器地址信息 saServer.sin_family = AF_INET; //地址家族 saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序 saServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.127");//连接服务器 ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer)); if (ret == SOCKET_ERROR) { printf("connect() failed!n"); closesocket(sClient); //关闭套接字 WSACleanup(); return; } char sendMessage[]="hello this is client message!"; ret = send (sClient, (char *)&sendMessage, sizeof(sendMessage), 0); if (ret == SOCKET_ERROR) { printf("send() failed!n"); } else printf("client info。

9.请问Socket编程的基本步骤是怎样的

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(); }}。

热门标签