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:%d\n", WSAGetLastError()); closesocket(sListen); //关闭套接字 WSACleanup(); return; }//侦听连接请求 ret = listen(sListen, 5); if (ret == SOCKET_ERROR) { printf("listen() faild! code:%d\n", 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:%d\n", 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 connection\n"); break; } nLeft -= ret; ptr += ret; } printf("receive message:%s\n", receiveMessage);//打印我们接收到的消息 。
}// closesocket(sListen);// closesocket(sServer);// WSACleanup(); } 【客户端】#include "stdafx.h"#include #include #include